开发者社区> 问答> 正文

.net关于同类对话框的只存在唯一实例的对象的实现:报错

写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();
}

....

展开
收起
kun坤 2020-06-06 13:36:12 508 0
1 条回答
写回答
取消 提交回答
  • 像你现在这样在主对话框中设置一个int的话,我很久以前也是经常这样做的,我以前的做法一般就是在创建子窗口的时候,将主窗口作为参数传递给子窗口,然后在子窗口中就可以操作主窗口的东东了,你只要在子窗口关闭事件中处理那个int16变量就行了

    当然这样的做法是很不可取的,应该采用其它方法:

    mutex互斥量;

    在程序目录内写入一个文件存储变量内容;

    定义一个公用类,静态变量、静态方法;

    在子窗口关闭时发自定义消息给主窗口,主窗口内接收到消息后进行处理;

    2020-06-06 13:36:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载