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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郎吉祥 中级黑马   /  2013-5-5 13:31  /  1621 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郎吉祥 于 2013-5-6 16:09 编辑

关于这个返回值问题。null不会被返回吗。点第三个按钮的时候,没用,我发了个附件。不知道成功没有
  private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            WarningWindow war = new WarningWindow();
          bool? result= war.ShowDialog();
          if (result == true)
          {
              MessageBox.Show("您选择了确定!");
              return;
          }
          if (result == false)
          {
              MessageBox.Show("您选择了取消!");
              return;
          } DialogResult.rar (56.36 KB, 下载次数: 17)



          if (result == null)
          {
              MessageBox.Show("您选择了放弃!");
              return;
          }
        }

评分

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

查看全部评分

3 个回复

倒序浏览
本帖最后由 张伟86 于 2013-5-5 15:22 编辑

请参看msdn中ShowDialog的说明:打开一个窗口,并且仅在新打开的窗口关闭后才返回。



当在警告窗口执行这句“DialogResult = null;”时,警告窗口并没有销毁,于是mainwindow中的bool? result一直没有接收到返回值。
而实践证明,就是在第三个“取消”按钮的“DialogResult = null;”语句之后手动加入“this.Close()”,DialogResult也会被修改为false;也就是说,bool? result只能被返回true or false,不能是null;虽然它的初始值是null(因为bool?被初始化为null);
PS:好吧,我就不谈我没有VS2010了,还没有.net 4了。
回复 使用道具 举报
张伟86 发表于 2013-5-5 13:52
请参看msdn中ShowDialog的说明:打开一个窗口,并且仅在新打开的窗口关闭后才返回。

我找到了……如果显示对话框,但不接受或取消该对话框,则 DialogResult 是 null。好吧。F1确实挺管用。
回复 使用道具 举报
郎吉祥 发表于 2013-5-5 17:59
我找到了……如果显示对话框,但不接受或取消该对话框,则 DialogResult 是 null。好吧。F1确实挺管用。 ...

:D null仍然无法返回呀!不用纠结!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马