A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘赛 中级黑马   /  2013-5-4 10:06  /  6304 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当窗口用ShowDialog()打开时 给DialogResult赋值就会关闭窗口使用Close() 也能关闭窗口。2者

什么区别?

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 张伟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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马