热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

在开发PLC-Recorder软件时,自己用窗体做了大量对话框,并将对话框窗体里的某个按钮设置为“CancelButton”,也就是说在按

在开发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日


推荐阅读
author-avatar
心语忆录_288
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有