C# DialogResult的用法

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

大家好,又见面了,我是你们的朋友全栈君。

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

frmAddUser frm = new frmAddUser();
   if (frm.ShowDialog() == DialogResult.OK)   
   {
    //todo list
   } 

 

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

clip_image002

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

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

clip_image004

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

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

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

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

 this.DialogResult = DialogResult.OK;

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

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

原文链接:http://www.cnblogs.com/xiaoxiangfeizi/archive/2012/04/19/2456469.html

转载于:https://www.cnblogs.com/lstory/p/7388420.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152177.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • wannacry病毒作者_wannacry病毒利用了哪种漏洞

    wannacry病毒作者_wannacry病毒利用了哪种漏洞1.样本概况1.1样本信息病毒名称:Trojan-Ransom.Win32.Wanna.m所属家族:木马/勒索/蠕虫MD5:DB349B97C37D22F5EA1D1841E3C89EB4SHA1:E889544AFF85FFAF8B0D0DA705105DEE7C97FE26CRC32:9FBB12271.2测试环境及工具…

    2022年10月9日
    1
  • poj 2375「建议收藏」

    poj 2375「建议收藏」这道题是一道gu

    2022年6月13日
    27
  • 遍历数据时arraylist效率高于linkedlist_遍历问题种类

    遍历数据时arraylist效率高于linkedlist_遍历问题种类概述一个java程序猿比较广为人知的小知识,是ArrayList和LinkedList最好使用迭代器删除,而不是遍历删除。当我们尝试使用for循环或者forEach进行删除的

    2022年8月16日
    7
  • 傅里叶分析(转自知乎)

    傅里叶分析(转自知乎)微博:@花生油工人知乎专栏:与时间无关的故事谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。—

    2022年7月1日
    26
  • 如何在eclipse中导入java工程文件和java源代码文件

    如何在eclipse中导入java工程文件和java源代码文件一、如何在eclipse中导入工程文件1.File–>Import2.General下拉,点一下ExistingProjectsintoWorkspace,再点Next3.点Browse选择工程的位置,勾上Copyprojectsintoworkspace最后点Finish2.如何导入已有的java源文件到包下操作过程:把原有的java源文件复制,点一下选中要复制到的包下,在粘贴一下即可。…

    2022年7月7日
    30
  • 打开windows xp的默认共享

    XP打开默认共享$先在控制面板的“服务”,看SERVER服务是否启动,如果没有启动,则将设置为自动或者手动,然后再选择启动。开启系统的默认共享的方法1.检查AutoShareServer和AutoShareWks注册表值是否为0。2.找到注册表中的HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/LanmanServer/Para

    2022年4月16日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号