سؤال

لدي تطبيق MDI. عندما أعرض مربع رسالة باستخدام MessageBox.show () ، يختفي التطبيق بأكمله خلف كل النوافذ المفتوحة عندما أقوم بإرسال مربع الرسالة.

الكود لا يفعل أي شيء مميز. في الواقع ، إليك الخط الذي يستدعي مربع الرسالة من داخل نموذج طفل MDI:

MessageBox.Show(String.Format("{0} saved successfully.", Me.BusinessUnitTypeName), "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)

Me.BusinessUnitTyPename () هو خاصية قراءة فقط التي تُرجع سلسلة ، اعتمادًا على قيمة متغير الأعضاء. لا توجد آثار جانبية في هذه الخاصية.

أيه أفكار؟

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

المحلول

قم بإزالة المعلمة الأخيرة ، MessageBoxOptions.DefaultDesktopOnly.

من MSDN:

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

تتيح المعلمة الأخيرة الاتصال بخدمة Windows الخلفية مع سطح المكتب النشط من خلال وسائل CSRSS.Exe! انظر بارت دي سميت مشاركة مدونة للتفاصيل.

نصائح أخرى

مسح ال MessageBoxOptions.DefaultDesktopOnly المعلمة وستعمل بشكل صحيح.

DefaultDesktopOnly يحدد ذلك ""يتم عرض مربع الرسالة على سطح المكتب النشط"مما يسبب فقدان التركيز.

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

MessageBox.show ("Hello").

تبين ، كان هناك أمر bindingsource.endedit قبل مراسلة الرسائل. لم يكن Bindingsource متصلاً بأي عناصر تحكم حتى الآن ، لكنه تسبب في تغيير النافذة عن مواقع Z.

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

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