سؤال

ولدي الشكل الذي هو mdicontainer ويحتوي على شريط القائمة في الأعلى. I إضافة نموذج الطفل في بلدي حاوية الاستنشاق بالجرعات المقننه وعندما تعظيم الطفل ذلك يزيد على menustrip. أريد أن أعرف كيف للحد من طفل لتحقيق أقصى قدر أقل من menustrip. أي مساعدة سيكون موضع تقدير.

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

المحلول

ويتم تكبير شكل طفلك في الطريقة التي من المفترض أن يكون الحد الأقصى في MDI أشكال الأطفال. انها ليست حقا تغطي قطاع القائمة من النموذج الأصل - انها دمج الواقع شريط القائمة الخاصة بها مع أن من النموذج الأصلي

لجعل النموذج الطفل يستغرق سوى مساحة الطفل المتاحة في الأصل MDI (وليس دمج القائمة مع القائمة الوالدين)، وضع شيء مثل هذا الكود في حدث تغيير الحجم على شكل الطفل:

if (this.WindowState == FormWindowState.Maximized)
{
    this.WindowState = FormWindowState.Normal;
    this.Size = this.MdiParent.ClientSize;
    this.Location = new Point(0, 0);
}

والتي سوف يمنع نافذة الطفل من التعرض للأقصى حد ممكن في الواقع.

وأقول "شيء مثل هذا الكود" لهذا المقتطف لا تعمل صحيح تماما. الخاصية ClientSize من النموذج الأصلي يعطي الحجم الكلي للشكل، في حين كنت تريد استخدام حجم فقط منطقة العميل MDI. أنا لا أعرف كيفية الحصول على ذلك، وعلى ما يبدو انها ليست فائقة سهلا. نرى هذا السؤال:

الحجم / موقع WinForms عناصر MDI منطقة العميل

نصائح أخرى

هل يمكن تعيين الخاصية MaximumSize بحيث لا تملأ الحاوية بأكملها.

وأنا أعلم أن هذه مسألة قديمة، ولكن أنا فقط اصطدمت هذه على المشروع القديم أعمل على، لذلك هنا إجابة على أي شخص يرى هذا. ووضع قفص الاتهام لDockStyle.Fill تعطيك السلوك الذي تريده.

ومجرد أن يكون على علم بأن نافذة ستتصرف / نظرة غريبة إذا حاولت إعادة أو تغيير حجم نافذة حين أن لديها أن DockStyle.

لتحقيق ذلك، اشتركت في حالة تغيير حجم إطار العميل MDI وإذا كان قد تم تكبير إطار، أنا وضعت DockStyle لملء، تعيين FormBorderStlye إلى FixedDialog (لمنع تغيير حجم)، وتعيين حالة نافذة إلى وضعها الطبيعي لمنع تعظيم من الحدوث.

لمنع المستخدم من تحريك نافذة أثناء وجوده في هذه "الدولة إلى أقصى حد" أنا ببساطة تجاهلت أسلوب WndProc والتعامل معها عندما كان يجري نقل نافذة (SC_MOVE) وضعت عودة لمنع العمل من سريانه.

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