C#对话框窗体里的特殊机制

编程 专栏收录该内容
17 篇文章 2 订阅

在开发PLC-Recorder软件时,自己用窗体做了大量对话框,并将对话框窗体里的某个按钮设置为“CancelButton”,也就是说在按“ESC”键时能够执行该按钮里的程序,并关闭窗体。正常配置如下:

1、配置情况:

form1里的按钮代码(用对话框打开):

 private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.ShowDialog();
        }

form2里的按钮代码(如果选择退出,则关闭对话框,否则不关闭):

private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("in button");

            if (cbleave.Checked)
            {
                Close();
            }
            else
            {
                int i = 0;
            }
        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            MessageBox.Show("in closing");
        }

2、遇到的问题:退出选择无效。

不管是否选择退出,按退出按钮后,都会退出。将form2的“CancelButton”设置为无时,按ESC不会退出对话框,但是,按按钮后,还是会顽强退出。

3、解决办法:

新增一个按钮与form2里这个按钮进行对比,发现是这个按钮的“DialogResult”被设置成了“Cancel”,设置成“无”后,解决了这个问题。

4、对话框窗体的特殊机制:

当窗体被作为对话框启动后,有一些特殊的响应机制,会依据设置对于ESC、回车等进行响应。

某按钮被选择为响应按钮后,就会自动修改其“DialogResult”选项。当按了ESC键后,首先执行按钮里的程序,然后再执行窗体退出指令。因此,按钮里的程序无法阻止退出。

如果按钮没有被选择为响应按钮,但是设置了“DialogResult”选项,在执行按钮里的程序后,还是会自动执行退出指令。

只有按钮没有被选择为响应按钮,且将“DialogResult”设置为“无”时,才会根据选项进行退出。

 

2020年12月1日

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

chengjl8

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值