写C#的windows应用程序时,需要控制同类子对话框只有一个实例,本人采用的是在主对话框中设立一个Int16类型的变量进行控制(对话框很多,所以用16位整数控制),但是不知道怎么实现在子对话框关闭后重设变量,导致对话框打开一次后就打不开了。
部分代码如下:
public Int16 state = (Int16)0x0000;
……
private void 密码修改ToolStripMenuItem_Click(object sender, EventArgs e)
{
if ((state & 0x0010) == 0x0010)
return;
frmAdmPassword ap = new frmAdmPassword(M_strName);//实例化子对话框
state |= 0x0010;
ap.MdiParent = this;
ap.Show();
}
....
像你现在这样在主对话框中设置一个int的话,我很久以前也是经常这样做的,我以前的做法一般就是在创建子窗口的时候,将主窗口作为参数传递给子窗口,然后在子窗口中就可以操作主窗口的东东了,你只要在子窗口关闭事件中处理那个int16变量就行了
当然这样的做法是很不可取的,应该采用其它方法:
mutex互斥量;
在程序目录内写入一个文件存储变量内容;
定义一个公用类,静态变量、静态方法;
在子窗口关闭时发自定义消息给主窗口,主窗口内接收到消息后进行处理;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。