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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 昕☆Rainbow 中级黑马   /  2014-7-9 13:37  /  2658 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 昕☆Rainbow 于 2014-7-12 09:14 编辑
  1. namespace 自定义接口实现确定取消重试对话框
  2. {
  3.    
  4.     /// <summary>
  5.     /// MainWindow.xaml 的交互逻辑
  6.     /// </summary>
  7.     public partial class MainWindow : Window
  8.     {
  9.         public MainWindow()
  10.         {
  11.             InitializeComponent();
  12.         }

  13.         private void button1_Click(object sender, RoutedEventArgs e)
  14.         {
  15.             MyWindow mywin = new MyWindow();
  16.             mywin.Message = this.txtContent.Text;
  17.             mywin.Head = "警告";
  18.             bool? b=mywin.ShowDialog();
  19.             if (b == true)
  20.             {
  21.                 MessageBox.Show("确定了!");
  22.             }
  23.             else if (b == false)
  24.             {
  25.                 MessageBox.Show("取消了!");
  26.             }
  27.             else if(b==null)
  28.             {
  29.                 MessageBox.Show("重试!");
  30.             }

  31.         }
  32.     }
  33. }</p><p>
  34. </p><p>
  35. </p><p>
  36. </p><p>
  37. </p><p>
  38. </p><p>
  39. </p><p>
  40. </p><p>
  41. </p><p>
  42. </p><p>
  43. namespace 自定义接口实现确定取消重试对话框
  44. {
  45.     interface IMyWindow
  46.     {
  47.         string Title { get; set; }
  48.         string Message { get; set; }

  49.     }
  50.     /// <summary>
  51.     /// MyWindow.xaml 的交互逻辑
  52.     /// </summary>
  53.     public partial class MyWindow : Window,IMyWindow
  54.     {
  55.         private string head;
  56.         private string message;
  57.         public MyWindow()
  58.         {
  59.             InitializeComponent();
  60.         }

  61.         private void btnOK_Click(object sender, RoutedEventArgs e)
  62.         {
  63.             DialogResult = true;
  64.         }

  65.         private void btnCancel_Click(object sender, RoutedEventArgs e)
  66.         {
  67.             DialogResult = false;
  68.         }

  69.         private void btnRetry_Click(object sender, RoutedEventArgs e)
  70.         {
  71.             DialogResult = null;
  72.             
  73.         }


  74.         public string Head
  75.         {
  76.             get
  77.             {
  78.                 return head;
  79.             }
  80.             set
  81.             {
  82.                 head = value;
  83.             }
  84.         }



  85.         public string Message
  86.         {
  87.             get
  88.             {
  89.                 return message;
  90.             }
  91.             set
  92.             {
  93.                 message = value;
  94.             }
  95.         }

  96.         private void Window_Loaded(object sender, RoutedEventArgs e)
  97.         {
  98.             
  99.             txtbContent.Text = Message;
  100.             Title = Head;
  101.         }
  102.     }
  103. }
复制代码



如上,我点击确定,取消时都很正常的关闭对话框并弹出了MessageBox提示,但是点击重试的时候就是不行,点击了重试后没有反应,调试后发现新窗口的DialogResult属性是变成null了,但是没有自动关闭窗口,是不是给DialogResult属性赋值为null是无法让窗口自动关闭并返回null的?为什么呢?


评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

5 个回复

倒序浏览
感觉你这样做是有问题的,你可以将 你的dialogresult的值赋值成为一个枚举类型而不是bool类型,比方说dialogresult=DialogResult.Ok; 或者是dialogresult=DialogResult.Cancel   你可以试一下。。我以前就是这样弄的。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
我我我我我我我我
回复 使用道具 举报
致立 发表于 2014-7-10 21:12
感觉你这样做是有问题的,你可以将 你的dialogresult的值赋值成为一个枚举类型而不是bool类型,比方说dialo ...

。。WPF里的DialogResult是一个属性不是类,只有true,false,null三种值,你说的应该是在WinForm里的吧
回复 使用道具 举报
当有人给你回复后,请及时把帖子编辑为提问结束。这样版主才给你加分。你不是找我要了几次了吗?编辑提问结束啊
回复 使用道具 举报
昕☆Rainbow 发表于 2014-7-11 10:40
。。WPF里的DialogResult是一个属性不是类,只有true,false,null三种值,你说的应该是在WinForm里的吧 ...

好吧,那应该是我记错了。。伤心
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马