关于DialogResult

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

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

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

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

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

clip_image002

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

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

clip_image004

      如果我想判断一下,用户输入的邮件格式是否正确,那么我该把这段代码放在哪呢?如果放在邮件输入框那个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,所以“增加用户”的对话框永远不会关闭,主窗体也会一直等待,而不会去执行其他的代码。

以上为我转的,解释的很好

————————————————————————————–

我实验的:

在form1中写button事件:

    Form2 f2 = new Form2();
            f2.Show();
            f2.Visible = false;//没有这句的话,下面的ShowDialog()会出异常 。已经可见的窗体不能显示为模式对话框。在调用 showDialog 之前应将窗体的 Visible 属性设置为 false。
            if (f2.ShowDialog() == DialogResult.OK)
            {

                this.button1.Text = f2.Text;
            }

或者:

            Form2 f2 = new Form2();
         
            if (f2.ShowDialog() == DialogResult.OK)
            {

                this.button1.Text = f2.Text;
            }

form2中 button事件:

 DialogResult = DialogResult.OK;

模态对话框:Modal Dialogue Box,是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。

————————————————————————————–

windows 的showDialog 方法

http://msdn2.microsoft.com/zh-cn/library/system.windows.forms.form.dialogresult(VS.80).aspx

窗体的对话框结果是当窗体显示为模式对话框时从该窗体返回的值,如果窗体显示为对话框,用DialogResult枚举中的值设置此属性将设置该窗体的对话框结果值、隐藏模式对话框并将控制返回给调用窗体。此属性通常由窗体上Button控件的DialogResult属性设置

当用户单击 Button 控件时,分配给 Button 的DialogResult 属性的值将分配给该窗体的 DialogResult 属性。

当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为 DialogResult.Cancel。当用户单击对话框的“关闭”按钮或设置 DialogResult 属性的值时,不会自动调用 Close 方法。而是隐藏该窗体并可重新显示该窗体,而不用创建该对话框的新实例。因为此行为,所以当应用程序不再需要该窗体时,必须调用该窗体的 Dispose 方法。

可以使用此属性确定对话框是如何关闭的,以便正确处理在该对话框中执行的操作。

关于DialogResult
public 
void CreateMyForm()


关于DialogResult 
{

关于DialogResult    // Create a new instance of the form.
关于DialogResult
    Form form1 = new Form();
关于DialogResult    // Create two buttons to use as the accept and cancel buttons.
关于DialogResult
    Button button1 = new Button ();
关于DialogResult    Button button2 = new Button ();
关于DialogResult   
关于DialogResult    // Set the text of button1 to “OK”.
关于DialogResult
    button1.Text = “OK”;
关于DialogResult    // Set the position of the button on the form.
关于DialogResult
    button1.Location = new Point (10, 10);
关于DialogResult    // Set the text of button2 to “Cancel”.
关于DialogResult
    button2.Text = “Cancel”;
关于DialogResult    // Set the position of the button based on the location of button1.
关于DialogResult
    button2.Location 
关于DialogResult       = new Point (button1.Left, button1.Height + button1.Top + 10);
关于DialogResult    // Make button1’s dialog result OK.
关于DialogResult
    button1.DialogResult = DialogResult.OK;
关于DialogResult    // Make button2’s dialog result Cancel.
关于DialogResult
    button2.DialogResult = DialogResult.Cancel;
关于DialogResult    // Set the caption bar text of the form.   
关于DialogResult
    form1.Text = “My Dialog Box”;
关于DialogResult 
关于DialogResult    // Define the border style of the form to a dialog box.
关于DialogResult
    form1.FormBorderStyle = FormBorderStyle.FixedDialog;
关于DialogResult    // Set the accept button of the form to button1.
关于DialogResult
    form1.AcceptButton = button1;
关于DialogResult    // Set the cancel button of the form to button2.
关于DialogResult
    form1.CancelButton = button2;
关于DialogResult    // Set the start position of the form to the center of the screen.
关于DialogResult
    form1.StartPosition = FormStartPosition.CenterScreen;
关于DialogResult    
关于DialogResult    // Add button1 to the form.
关于DialogResult
    form1.Controls.Add(button1);
关于DialogResult    // Add button2 to the form.
关于DialogResult
    form1.Controls.Add(button2);
关于DialogResult    
关于DialogResult    // Display the form as a modal dialog box.
关于DialogResult
    form1.ShowDialog();
关于DialogResult 
关于DialogResult    // Determine if the OK button was clicked on the dialog box.
关于DialogResult
    if (form1.DialogResult == DialogResult.OK)
关于DialogResult    {

关于DialogResult       // Display a message box indicating that the OK button was clicked.
关于DialogResult
       MessageBox.Show(“The OK button on the form was clicked.”);
关于DialogResult       // Optional: Call the Dispose method when you are finished with the dialog box.
关于DialogResult
       form1.Dispose();
关于DialogResult    }

关于DialogResult    else
关于DialogResult    {

关于DialogResult       // Display a message box indicating that the Cancel button was clicked.
关于DialogResult
       MessageBox.Show(“The Cancel button on the form was clicked.”);
关于DialogResult       // Optional: Call the Dispose method when you are finished with the dialog box.
关于DialogResult
       form1.Dispose();
关于DialogResult    }

关于DialogResult }

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152161.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • datax(27):不太常见配置项querySql、preSql、postSql、splitPk[通俗易懂]

    datax(27):不太常见配置项querySql、preSql、postSql、splitPk[通俗易懂]每个datax的json都有自己的json配置文档,基本大同小异,有几个配置较为少用,但是用了之后,真香~一、querySql1、使用教程描述:在有些业务场景下,where这一配置项不足以描述所筛选的条件,用户可以通过该配置型来自定义筛选SQL。当用户配置了这一项之后,DataX系统就会忽略table,column这些配置型,直接使用这个配置项的内容对数据进行筛选,例如需要进行多表join后同步数据,使用selecta,bfromtable_ajointable_bontabl.

  • python如何读写excel文件「建议收藏」

    python如何读写excel文件「建议收藏」python读写excel的方式有很多,不同的模块在读写的方法上稍有区别:用xlrd和xlwt进行excel读写;用openpyxl进行excel读写;用pandas进行excel读写;为了方便演示,我这里新建了一个data.xlsx…

  • 利用神器Typora+PicGo,实现有道云不用会员就可在Markdown自动上传图片

    本文是一篇工具的使用整理,希望能够帮助到你。欢迎关注公众号【Java编程技术乐园】,不止分享技术。文章目录01 开始02 实战安装`Picgo ` 配置+验证`Typora ` 配置+验证03 结束04 结束的尾巴01 开始阳春三月已过,感觉最近的天气是比较舒适的,在这个城市,湿冷的冬天过去,酷热的夏天未来,这样的日子持续的长一点就爽了。先简单梳理下之前分享过的文章:【教程】使…

  • C语言中的LARGE_INTEGER

    C语言中的LARGE_INTEGERLARGE_INTEGER是一个union:用于表示一个有符号整数值。结构定义如下typedefunion_LARGE_INTEGER{    struct{             DWORDLowPart,            LONG HighPart             };   LONGLONGQuadPart}LARGE_INTEGE

  • 使用回溯法解0/1背包问题n=3,c=9_背包问题C语言算法

    使用回溯法解0/1背包问题n=3,c=9_背包问题C语言算法解01背包问题有很多种方法,就我知道的就有动态规划,回溯法,分支界限法这几种,下面就列出我的回溯法解法,以供参考intcapacity;//背包容量intn;//物品数intweight[0..n];//物品重量数组intprice[0..n];//物品价值数组intcur_weight;//当前重量intcur_price;//当前价值int…

    2022年10月21日
  • 本地sql数据库怎么与远程sql数据库同步使用_sqlserver复制数据库

    本地sql数据库怎么与远程sql数据库同步使用_sqlserver复制数据库MySQL数据同步主要有三种方式:1.利用MySQL自身的数据库同步功能2.利用MySQL数据库的特性(数据库存在固顶目录,并且以文件形式存储),进行数据库目录同步以达到数据同步目的3.利用专用的MySQL数据库同步软件1.利用MySQL自身的数据库同步功能(下面参考自网上的文章,写的非常详细了)MySQL从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能.数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件

    2022年10月15日

发表回复

您的电子邮箱地址不会被公开。

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