كيف يمكنني الحصول على System.Windows.ShowDialog() لإرجاع القيمة "صحيح"؟

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

  •  21-08-2019
  •  | 
  •  

سؤال

كيف يمكنني الحصول على System.Windows.ShowDialog() للعودة "صحيح"؟

أنا جديد قليلا على هذا. System.Windows.ShowDialogنوع الإرجاع هو bool؟ومن المفترض أن يعود true عندما تضرب Submit, ، و false عندما تضرب Cancel.لكنني لست متأكدًا من كيفية تحديد أي منها Button هو زر الإرسال الرسمي.

يحرر:وفي ملاحظة ذات صلة، أشعر بالفضول لمعرفة كيفية إرجاعها فارغة.

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

المحلول

http://msdn.microsoft.com/ أون لنا / مكتبة / system.windows.window.showdialog.aspx

<اقتباس فقرة>   

وShowDialog بإرجاع قيم الفارغة <(من   <(T>)>) قيمة منطقية التي تحدد   سواء تم قبول النشاط أو   ألغيت. قيمة الإرجاع هي   قيمة العقار DialogResult   قبل إغلاق النافذة. (انظر   DialogResult).

وفي الأساس، عليك أن تقرر من خلال تحديد قيمة DialogResult، وليس عن طريق ضرب زر معين - عليك أن تقرر ما يقوم به زر

.

نصائح أخرى

في WPF، قم بتعيين Button.IsDefault الخاصية صحيحة لتحديد أن الزر هو زر "إرسال" للنافذة.لست متأكدًا بنسبة 100% من أن هذا سيؤدي إلى إغلاق النافذة بنتيجة DialogResult صحيحة.إذا لم يحدث ذلك، فستحتاج فقط إلى التعامل مع حدث النقر الخاص به على النحو التالي:

this.DialogResult = true;

يحرر

وبالمثل، يمكنك استخدام زر. إلغاء خاصية أن يكون الزر هو زر "إلغاء" للنموذج.

تحرير 2

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

وإذا قمت بتعيين DialogResult إلى true ShowDialog يعود صحيحا، إذا قمت بتعيين DialogResult إلى ShowDialog كاذبة ترجع كاذبة إذا تم إغلاق مربع الحوار دون وضع DialogResult (ينقر المستخدم على X أحمر في أعلى الزاوية اليمنى) وShowDialog العودة فارغة.

ووضع IsDefault إلى true سيتسبب على الزر لتبدو مختلفة قليلا والضغط على دخول و"فوق" هذا الزر.

إذا قمت بتعيين IsCancel إلى true في حساب الضمان الضغط سوف "انقر فوق" هذا الزر.

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