اقتراحات MessageBox.عرض استبدال هذا لا يمنع المستخدم الرسومية الموضوع ؟

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

  •  11-07-2019
  •  | 
  •  

سؤال

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

[أنا مشفرة بديل في ذلك الوقت ولكن أنا لا أحب ذلك.أنا ما بعد ذلك كما جوابا إذا كان شيء أفضل يظهر رغم]

تحرير:الحوار يجب أن تطفو على السطح من النافذة الرئيسية;أنا لا يهمني إذا كان يظهر في شريط المهام أم لا.أكثر من الحوار قد تكون نشطة في وقت واحد في ظروف معينة.

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

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

المحلول

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

نصائح أخرى

أقترح الذهاب مع غير مشروط النهج ، كما قال آخرون ، ولكن قليلا أكثر تحديدا:

  • إذا كنت ترغب فقط في الإعلام ، قد حاول بالون تلميح (TNA أو الخاصة) ، أو نافذة مثل Outlook البريد الإلكتروني الإخطار أو التبليغ العديد من الرسائل الفورية مثل تريلين العرض.
  • إذا كنت ترغب فقط في إعطاء المستخدم فرصة للعمل ، واستخدام غير مشروط شكل ولكن تذكر أنه قد جيد جدا فقط انقر بعيدا.
  • إذا كان المستخدم يجب أن تعمل على الرسالة الخاصة بك ، عليك أن تذهب مشروط.علما أن صاحب النافذة ستظل رسمت يمكنك تحديث واجهة المستخدم الرسومية - حوار مشروط ، بعد كل شيء ، رسالة مضخة, وإلا فإنه لن يعمل.فعلت شيئا من هذا القبيل في الآونة الأخيرة كان لدينا عامل الخلفية تجمع مؤشرات الترابط التي من شأنها أن تحمل على أي إجراءات والنار أحداث واجهة المستخدم الرسومية إلى تحديث ، و مشروط الانتظار الحوار الذي لا يزال حصلت على رسائل مضخة.مالك نافذة هل التحديث مع خلفية العمل كما هو متوقع.

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

وأود أن حل هذه باستخدام مربع حوار غير مشروط أو ربما بعض تلميحات اعتمادا على متطلبات محددة.

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

وشكر لكل من ساهم الاقتراحات، يبدو أن الحل بلدي كان حوالي اليمنى. -)

كان

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

إذا كنت تريد أن ننظر MESSAGEBOX ويشعر تظهر فقط في مؤشر ترابط خلفية.

ThreadPool.QueueUserWorkItem( (state) =>
    {
         MessageBox.Show("Your message");
    });

و(رمز لم تختبر)

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