在程序中,经常会弹出一个对话框来让用户填写一些信息,填写完成后,当用户点击“确定”按钮后,在主窗体中进行其他的处理。比如一个简单的例子,在主窗体中有一个菜单,是“增加用户”,当点击这个菜单之后,我们需要弹出一个增加用户的窗体出来,就假设“增加用户”的窗体叫frmAddUser,那么代码如下:

   1: frmAddUser frm = new frmAddUser();
   2:  
   3: if (frm.ShowDialog() == DialogResult.OK)
   4:  
   5: {
   6:  
   7: //todo list
   8:  
   9: }
  10:  

一般都是设置“增加用户”窗体中“确定”按钮的DialogResult的属性,

设置完成后,只要用户一点击“确定”按钮,那么对话框就关闭,重新回到主窗体,然后可以在主窗体中进行相应的处理,比如把数据写入数据库等。

现在有一个问题就是,“增加用户”的窗体如下:

如果我想判断一下,用户输入的邮件格式是否正确,那么我该把这段代码放在哪呢?如果放在邮件输入框那个TextBox的TextChaged事件中,那么用户输入一个字母都会激发那个事件,这样就不太好,如果放在“确定”按钮的事件中,那么如果用户的邮件格式输入的不正确,就不应该返回主窗体,而是继续留在这个窗体上,等待用户修改,可是事实却不是这样,因为你设置了“确定”按钮的Dialogue属性,只要用户一点击按钮,主窗体中的

   1: if (frm.ShowDialog() == DialogResult.OK)

这个判断就为真,不管你的邮件格式是否正确,主窗体都会继续向下执行。

最后,终于找到了一个比较好的解决办法,都以为只有Button才有Diagolue属性,没想到窗体也有这个属性。所以我们根本就不需要设置“确定”按钮的Diagolue属性,直接把判断邮件是否合格的方法放在”确定”按钮的点击事件中,如果符合,那么就设置窗体的Diagolue属性为OK,用下面的代码:

   1:  
   2: this.DialogResult = DialogResult.OK;

这样主窗体中的if (frm.ShowDialog() == DialogResult.OK)这个判断也为真,它会继续执行下面的代码。如果不符合格式,就啥也不做,因为没有设置窗体的Diagolue属性为OK,所以“增加用户”的对话框永远不会关闭,主窗体也会一直等待,而不会去执行其他的代码。

例子比较简单,只是我原来不知道这些,所以在这里记录一下。当然这只是一种办法,你也可以用其他的方法来解决类似这样的问题。

关于DialogResult的用法相关推荐

  1. C# DialogResult的用法

    在程序中,经常会弹出一个对话框来让用户填写一些信息,填写完成后,当用户点击"确定"按钮后,在主窗体中进行其他的处理.比如一个简单的例子,在主窗体中有一个菜单,是"增加用户 ...

  2. DialogResult的用法

    在程序中一旦设置DialogResult的值,接下来就会自动执行close()的方法,所以没有必要写this.close(),并且也没有必要设定closing和closed事件,其执行顺序为Dialo ...

  3. c#winform开发中DialogResult的用法

    1.DialogResult经常用在winform开发中的登录,设置参数中,在主窗体中弹出设置参数的窗体,当我们点击设置参数窗体上的确定按钮时,直接返回设置参数窗体的DialogResult的属性即可 ...

  4. MessageBox.Show用法

    (1)需要定义命名空间,using System.Windows.Forms 其实这个前提,写windows窗体就自动引用了,所以大部分情况下,这个不需要理会,好,下一步: (2)简单用法 Messa ...

  5. C# MessageBox.Show详解,详细用法,MessageBox函数,看这里包教包会

    (1)需要定义命名空间,using  System.Windows.Forms 其实这个前提,写windows窗体就自动引用了,所以大部分情况下,这个不需要理会,好,下一步: (2)简单用法 Mess ...

  6. C# MessageBox 用法大全(转)

    C# MessageBox 用法大全 http://www.cnblogs.com/Tammie/archive/2011/08/05/2128623.html 我们在程序中经常会用到MessageB ...

  7. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  8. DataGridView很详细的用法

    DataGridiew用法总结 一. DataGridView 取得或者修改当前单元格的内容:  当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对 ...

  9. messagebox的用法_酝酿已久,MessageBox类实例代码讲解

    上一期介绍了MessageBox类的用法,那么如何对弹出的消息对话框上的按钮进行响应呢?今天我们来介绍程序代码如何根据单击按钮来产生响应操作. 在响应操作时,每个按钮都有自己的返回值,程序当中可以使用 ...

最新文章

  1. 07-IP组播配置指导
  2. redis代码 支持的数据结构
  3. Seata 是什么?
  4. java 在某个范围内随机_java生成某个范围内的随机时间
  5. nodejs笔记五--MongoDB基本环境配置及增删改查;
  6. 在线教育行业APP高效开发解决方案
  7. linux 路由添加
  8. hive sql 添加字段以及修改字段
  9. QQ聊天 代码 输入表情
  10. python计算不定积分_python快速求解不定积分和定积分
  11. 负载阻抗、感抗、容抗
  12. rimraf node_modules 删除报错 rimraf : 无法加载文件
  13. html页面打印插件,分享8款网站开发中最好用的打印页面插件
  14. 夏黑葡萄水果发朋友圈的文案
  15. 基于STM32和EV1527的无线接收解码程序
  16. 今年 NFT 爆火,如何快速入行?(艺术家完整指南)
  17. jq animate动画
  18. 牛客小白月赛2 B.小马过河
  19. 猫猫学iOS之安装cocoapods
  20. linux终端输出c语言程序,Linux终端程序用c语言实现改变输出的字的颜色

热门文章

  1. 一个成功的管理者应具备哪些能力
  2. linux查看磁盘条带,Linux_LVM_详解_03 线性和条带
  3. Apache jmeter基础一:用途、安装、运行
  4. gamit运行报错 grep SP file :bad year 2021
  5. 学计算机人都很自私,心理学:总有一天你会明白,那些选择丁克的人,都是自私的...
  6. MySQL 联级删除(on delete cascade)应用
  7. 《剪刀手爱德华》(Edward Scissorhands )-- I can't
  8. flutter打包解决 Running Gradle task ‘assembleRelease‘...死循环问题
  9. 开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网imx6ull 小熊派结合)...
  10. 犀利开发 jQuery内核详解与实践pdf