إجبار الحجم التلقائي على الحجم التلقائي
-
21-09-2019 - |
سؤال
لدي الهيكل التالي في نموذج Windows:
Form (AutoResize = true, AutoSizeMode = GrowAndShrink)
FlowLayout (AutoResize = true, AutoSizeMode = GrowAndShrink)
GroupBox
GroupBox
GroupBox
StatusStrip
توقعاتي هو أن تغيير رؤية صناديق المجموعة يجب أن يتسبب في انقطاع النافذة إلى حجم جديد لاستعادة مساحة فارغة ، أو استيعاب عناصر تحكم جديدة. ومع ذلك ، هذا لا يحدث تلقائيا. إذا قمت بتقليل إلى الحد الأقصى إلى الدرج ثم استعد النموذج (أي تبديل مرئي ، ShowIntaskBar ، WindowState = Normal/Minive) ، ثم عند ظهوره ، سيتم تحديثه بشكل صحيح. شيء آخر يحفزه هو تحديث للمحتوى في statusstrip في أسفل الصفحة (يعرض تسمية ، وتغيير شريط التقدم وما إلى ذلك). لقد جربت العديد من مجموعات مستوحاة من الفودو من إبطال/تحديث/onresize إلخ ، لكنني أشعر أنني أفتقد شيئًا أكثر جوهرية قليلاً وآمل أن يتمكن شخص ما من رؤية الخلل الواضح فيما أصفه.
جميع التحديثات الخاصة بي إلى واجهة المستخدم على النموذج موجودة داخل/استدعاء Invokerequired ، إذا كان ذلك مناسبًا.
المحلول
لا يمكنني إعادة صياغة هذه المشكلة باستخدام نموذج اختبار بسيط يستخدم إعدادات التخطيط والخاصية. تقلص منطقة عميل النموذج عند بدء التشغيل وتنمو حسب الحاجة لجعل مربع المجموعة مرئيًا عندما أقوم بتعيين خاصية مرئية على True.
يمكنك طلب إعادة حساب تخطيط صريح باستخدام طريقة performayout ().