黑马程序员技术交流社区

标题: WPF中DialogResult和Close() [打印本页]

作者: 刘赛    时间: 2013-5-4 10:06
标题: WPF中DialogResult和Close()
当窗口用ShowDialog()打开时 给DialogResult赋值就会关闭窗口使用Close() 也能关闭窗口。2者

什么区别?
作者: 张伟86    时间: 2013-5-4 14:05
本帖最后由 张伟86 于 2013-5-4 15:01 编辑

1、首先,调用ShowDialog()函数后,它所对应创建的Dialog框体在执行结束时就会自动调用自身Close()函数进行对话框销毁操作。
2、如果给ShowDialog()赋值,仍然是被创建的Dialog调用自身Close()函数关闭窗口。
3、两者不同的是,为ShowDialog()赋值,可以获取Dialog在调用时的按钮操作结果,帮助我们判断下一步该做什么事情。
4、ShowDialog()的其他用法和Winform下状态都是一样的,唯一不一样的就是WPF里DialogResult的类型是bool?,也就是Nullable<bool>,而不是winform里那个枚举。
bool?已经可以表示三种返回状态了——true、false、null。根据这3种状态可以有效帮助我们判断下一步该做什么事情。
例如 :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Data;
  8. using System.Windows.Documents;
  9. using System.Windows.Input;
  10. using System.Windows.Media;
  11. using System.Windows.Media.Imaging;
  12. using System.Windows.Navigation;
  13. using System.Windows.Shapes;
  14. using Microsoft.Win32;

  15. namespace WpfApplication1
  16. {
  17.     /// <summary>
  18.     /// Window1.xaml 的交互逻辑
  19.     /// </summary>
  20.     public partial class Window1 : Window
  21.     {
  22.         public Window1()
  23.         {
  24.             InitializeComponent();
  25.             
  26.             OpenFileDialog openFileDialog1 = new OpenFileDialog();
  27.             bool? result = openFileDialog1.ShowDialog();

  28.             if (result == true)
  29.             {
  30.                 MessageBox.Show("true");
  31.             }
  32.             else if (result == false)
  33.             {
  34.                 MessageBox.Show("CANCEL");
  35.             }            
  36.         }        
  37.     }
  38. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2