WPF中的Window.ShowDialog()的HasValue与Value事件(全网目前独一)

WPF中的Window.ShowDialog()打开的窗口中的按钮Close()事件

我经常会使用ShowDialog().Value;这个遇到实现下面的功能时,ShowDialog()出的窗体Close()时,并不能返回值。
错误代码如下:
 0 AddDataWay addDataWay = new AddDataWay();
 1 if (addDataWay.ShowDialog().Value)  // 
 2             {
 3                 int selectedWay = addDataWay.SelectWay();
 4                 if (selectedWay == 1)
 5                 {
 6                 }
 7                 else
 8                 {
 9                 }
10             }
对策一,更改为:
 0 AddDataWay addDataWay = new AddDataWay();
1
if (addDataWay.ShowDialog().HasValue) // 2 { 3 int selectedWay = addDataWay.SelectWay(); 4 if (selectedWay == 1) 5 { 6 } 7 else 8 { 9 } 10 }
对策二,AddDataWay代码中 this.Close();前加入一行 this.DialogResult = true;如下:
1 base.DialogResult = true; //this.Close()
2 base.Close();  //this.DialogResult = true;
补充:C#base和this的区别
AddDataWay窗口代码:
 1 public partial class AddDataWay : DXWindow
 2     {
 3         #region 成员变量
 4         public static int selectedWay=1;  // 选择方式默认云端
 5         #endregion
 6 
 7         public AddDataWay()
 8         {
 9             this.InitializeComponent();
10         }
11 
12         private void DXWindow_Loaded(object sender, RoutedEventArgs e)
13         {
14         }
15 
16         /// <summary>
17         /// 云端-0
18         /// </summary>
19         /// <param name="sender"></param>
20         /// <param name="e"></param>
21         private void ImportFromTheCloud_Click(object sender, RoutedEventArgs e)
22         {
23             selectedWay = 0;
24             this.Close();
25         }
26 
27         /// <summary>
28         /// 本地-1
29         /// </summary>
30         /// <param name="sender"></param>
31         /// <param name="e"></param>
32         private void ImportFromTheLocal_Click(object sender, RoutedEventArgs e)
33         {
34             selectedWay = 1;
35             this.Close();
36         }
37     }
365个夜晚,我希望做到两天更一篇博客。加油,小白!
原文地址:https://www.cnblogs.com/qq2806933146xiaobai/p/14030216.html