سؤال

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

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

المحلول

إليك طريقة لا تتطلب منك كتابة أي رمز محدد من التحجيم ... لكنه يفترض أن جميع الأزرار الخاصة بك في الأسفل.

الخطوة 1. قم بتعيين الحد الأدنى للحورد.

الخطوة 2. قم بإنشاء لوحة في النموذج.

الخطوة 3. حرك الأزرار الخاصة بك إلى اللوحة.

الخطوة 4. قفص الاتهام لوحة إلى أسفل النموذج.

الخطوة 5. تأكد من تعيين مربع الحوار Autosizemode على Shrinkandgrow

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

نصائح أخرى

هل يمكنني اقتراحك ليس افعل هذا؟ أعلم أنك تحاول أن تكون مفيدا للمستخدمين الخاص بك، ولكن وجود نافذة تقلص بشكل عشوائي (من المحتمل أن تبدو عشوائية للمستخدم) ستكون مربكة وربما محبطة. ربما يكون هذا أكثر صحة مع ميزة Windows 7 UI الجديدة ميزة Aero Snap IE أنك قفص الاتجاه النافذة إلى اليسار ثم يتم تغيير حجمها عليك.

النظر في حجم النافذة تفضيل المستخدم. أخبرك المستخدم بالفعل كم يريدون أن يكون الشيء، واحترامها!

تحرير: يجب أن أضيف أيضا أن هناك خطأ إذا كنت تنزل هذا الطريق. ضع في اعتبارك أن النموذج يجري 1000 جزءا من المشاركة واستمر المستخدم إلى (-500، 100) لإظهاره نصف الشاشة. إذا ضربوا زر مرئي (أو أسوأ، يحدث شيء ما في الخلفية!) ويتم تغيير حجم النموذج إلى 450 بكسل قد اختفت النافذة للتو! يرى المستخدم في شريط المهام، ولكن لا يمكن الوصول إليه إلا إذا كان يعرفون بعض اختصارات الفضاء Fancy ALT +.

سيكون اقتراح واحد هو ربط حدث OnPaint. يتم بناء عناصر التحكم الخاصة بك بواسطة هذه النقطة ولديها قيم الموقع الأولي التي تم تعيينها في النموذج. التقاط كل ما تريده في مجموعة كائن خاص على مستوى النموذج.

خلال حدث OnStringsReMoved، اقرأ من كائنك وتعيين كل شيء مرة أخرى بالطريقة التي كانت بها. يجب أن يؤدي تعديل عنصر تحكم مفصل إلى تغيير حجم النموذج ولكن قد يكون لديك ما عليك تعيين كل شيء يدويا. قد يكون أيضا أن تعديل النموذج سوف يتقلص عناصر التحكم وليس في الاتجاه الآخر.

سيكون اقتراح بديل هو مجرد تصرف القيم الأولية والعودة إليهم في كل مرة. أنا شخصيا سوف تختار onpaint. سوف يساعدك في التعامل مع أشياء مثل الخطوط الكبيرة التي تدمح حجم التحكم أو أي شيء يفعله الإطار قبل أن يرى المستخدم ذلك.

استخدم system.grawing.graphics.masurostring.

    public SizeF MeasureString(string text, Font font, int width);

النص = yourtext؛ الخط = fontofthelabel؛ العرض = maxwidthoflabel؛

القياس في MSDN.

يمكنك جوجل لمزيد من

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