C# .net Framework- حدود على جانب واحد فقط من النموذج

StackOverflow https://stackoverflow.com/questions/1408225

  •  05-07-2019
  •  | 
  •  

سؤال

أنا مبرمج عديم الخبرة، وجديد تمامًا في البرمجة لنظام التشغيل Windows.

أنا أكتب برنامجًا صغيرًا كنت أرغب فيه دائمًا.تتم كتابته باستخدام C# باستخدام .net Framework.على الأقل هذا ما أعتقد أنني أفعله.كل الحديث عن إطار العمل و.nets ونماذج Windows وWin32 API جعلني في حيرة من أمري..:(

على أي حال لدي كائن نموذج بسيط.

 Form f = new Form() ;
 f.Text = "" ;   
 f.ControlBox =false ;

الآن كيفية إزالة كافة الحدود في النموذج باستثناء جانب واحد؟كما هو الحال في، يجب أن تختفي الحدود الجانبية، ولكن يجب أن تبقى الحدود العلوية

لا يحتوي FormBorderStyle على أي شيء لهذا الغرض

وأيضاً كيف تحلون مثل هذه المشاكل بأنفسكم دون أن تسألوا؟انظر إلى رمز الآخرين؟قراءة كتاب؟أي موقع معين؟لقد بحثت في جوجل، ولكن لم يظهر أي شيء.

هل كانت مفيدة؟

المحلول

وGidday،

وهذا مستحيل، لسوء الحظ - يمكنك إزالة الحدود كله، على الرغم من ثم رسم بنفسك على شكل واستخدام عند_ضغط_الماوس، OnMouseUp وOnMouseMove للقيام السحب الخاصة بك ...

لحل هذه المشكلة نفسي، أود أن ننظر في طرق مختلفة مختلفة لتمثيل لفظيا المشكلة (على سبيل المثال. "شكل بلا حدود"، "حدود العرف على winform"، الخ) وقضاء بعض الوقت غوغلينغ لذلك. كما تقول مدرب بلدي بحكمة والإنتاجية ليست دائما عن مدى الرمز الذي قطع، كما انها حول ما يمكنك أن تتعلم.

وتحرير: وكما يقول التعبير الشعبي "جوجل يعرف كل شيء" - وهناك احتمالات بأن، إذا كنت تنفق قليلا من الوقت غوغلينغ وكنت لا تزال لا يمكن العثور على أي شيء، فإنه ربما لم يتم حلها، أو انها جدا نادر جدا. وهناك طريقة أخرى تتمثل في الاستثمار في عدد قليل من الكتب الجيدة، على سبيل المثال نماذج Windows البرمجة (أو حتى برمجة ويندوز فقط - انها مفيدة بشكل لا يصدق لمعرفته حول اليات الكامنة وراء النوافذ، وأشياء من هذا القبيل هي التي تساعد يحولك إلى تطوير كبير مبرمج عظيم هو جيد في الترميز، ولكن عظيم <م> مطور هو جيد في بناء الواقع برامج مفيدة:)

نصائح أخرى

وأفترض أنك قد حاولت FormBorderStyle.FixedSingle؟ هذا من شأنه أن يعرض نموذج مع الحدود في الجزء العلوي فقط. على أي حال، إذا كان هذا ليس هو الحال يمكنك تعيين منطقة الأشكال.

وشيء من هذا القبيل ...

public static void HideBorders(Form form)
{
    Rectangle newRegion = form.Bounds;
    Rectangle formArea = form.Bounds;
    Rectangle clientArea = form.RectangleToScreen(form.ClientRectangle);

    formArea.Offset(form.Location);
    newRegion.Offset(clientArea.X - formArea.X, 0);
    newRegion.Width = clientArea.Width;
    newRegion.Height = (clientArea.Y - formArea.Y) + clientArea.Height;

    form.Region = new Region(newRegion);
}

وأما عن كيف يمكنك أن تعرف ماذا تفعل؟ كل الأشياء التي ذكرتها، ملفات المساعدة، والمنتديات على شبكة الإنترنت، والكتب. الشيء الرئيسي هو الممارسة، والممارسة، والممارسة. وكلما كنت تفعل شيئا والأفضل لك أن تصبح.

لا أعتقد أنه من الممكن فعلًا فعل ما تصفه بالضبط، نظرًا لأن .NET Framework سيقوم فقط بتفويض رسم حدود النموذج وشريط العنوان الخاص بك إلى Windows نفسه، والذي ليس لديه أي خيار لما تصفه AFAIK .

بدلا من ذلك، ما سأفعله هو استخدام FormBorderStyle.None ثم قم برسم أي زخارف نافذة (شريط العنوان، الحدود) التي تريدها يدويًا.

يؤدي بحث Google عن "نموذج C# بلا حدود" إلى إظهار هذه المواقع كأفضل ثلاث نتائج:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top