如何使用 C# 阻止窗口窗体在单击时重新打开?
我正在使用包含菜单的 MDIParent 窗口窗体,当我再次单击同一菜单时,它会打开一个新窗口。那么如果窗口已经打开,如何阻止它重新打开窗口呢?每次单击时不应显示窗口窗体。
I am using MDIParent window form which contains menus, when I click on same menu again it open a new window. so how to stop this from reopening the window if it is already open? It should not display window form every time on click.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 Application.OpenForms 属性。
Use Application.OpenForms property.
2种方式:
方式1,标志:
为打开的表单保留一个标志(或标志列表)。
每次打开表单(创建一个 new() 表单)时,将标志设置为“true”。
当表单关闭时,将标志设置为 false。
在按钮的单击事件中,在创建新表单之前检查标志以查看表单是否已打开。
方式2,保留参考:
在主表单中保留对您正在使用的所有表单的引用。
当表单未打开时将它们初始化为 null。
当您打开新表单时,请设置对其的引用。
在创建新表单之前,在按钮的单击事件上检查表单的引用是否为空。
我更喜欢第二种方式。当您引用所有子表单时,可以更轻松地控制资源。
2 ways:
Way 1, flags:
Keep a flag (or list of flags) for the open forms.
Each time you open the form (create a new() one) set the flag to "true".
When the form closes, set the flag to false.
In the button's click event, check the flag to see if the form is open before creating a new one.
Way 2, keep a reference:
Keep a reference in the main form to all the forms you're using.
Initialize them as null when the forms aren't open.
When you open a new form set the reference to it.
On the button's click event check if the form's reference is null before you create a new one.
I prefer the second way. It's easier to control your resources when you have references to all your sub-forms.
您可以维护打开的表单列表(并在 onClick 事件中检查列表),或者在表单打开或关闭时禁用/启用菜单项。
You could maintain a list of open forms (and check the list in the onClick event), or disable/enable the menu item when the form opened ot closed.
另一个原因是在
Form
中创建一个Property
来保留您使用的默认实例。现在你总是通过这个属性访问你的窗口:
Another why would be to create a
Property
in theForm
which keeps the default instance you use.And now you always access your window through this property: