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

发布于 2021-11-19 01:53:28 字数 516 浏览 746 评论 1

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

....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

各自安好 2021-11-24 15:33:38

像你现在这样在主对话框中设置一个int的话,我很久以前也是经常这样做的,我以前的做法一般就是在创建子窗口的时候,将主窗口作为参数传递给子窗口,然后在子窗口中就可以操作主窗口的东东了,你只要在子窗口关闭事件中处理那个int16变量就行了

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

mutex互斥量;

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文