我有一个有3个案例的组合框。 case“0”打开一个对话框,说“不是一个有效的选择” 但是案例“1”和案例“2”在那里打开了独立的形式。 (FormMain和Form3)
如果Form3处于打开状态,我该如何制作呢?FormMain无法打开,并且会出现一个消息框。我不只是想要“.hide”功能。我已经有了那套。
我尝试了一些不同的东西,但都没有效果。我在formload和组合框选择索引
中尝试了它们有什么建议吗?
答案 0 :(得分:2)
如果我理解你的问题,听起来模态是解决这个问题的正确方法。
您当前正在使用Form.Show
method来显示所选的子表单。将其替换为Form.ShowDialog
method。代码看起来相同,但ShowDialog
方法将表单显示为模式对话框,这意味着必须先关闭表单,然后用户才能与应用程序中的任何其他表单进行交互。
另外,如果情况“0”确实“不是一个有效的选择”,你应该强烈考虑从组合框中完全删除该选项。
答案 1 :(得分:1)
您可以在模块中公开Form3和FormMain dim语句。在进行测试以查看当前正在运行的内容时,您可以检查表单当前是否正在使用
Public newFrm3 as Form3
Public newFrmMain as FormMain
'blah blah blah
If IsNothing(Form3) then
'form is closed, create new
newFrm3 = new Form3
newFrm3.Show
Else
'form is currently running, display message etc to alert user.
End If
这假定当用户关闭表单时,将其相应的变量设置为Nothing。
答案 2 :(得分:1)
您可以实现某种静态类,该类将保留当前显示的表单的实例。 确保每个表单在显示之前检查此静态类。
这样的事可能。
public static classs FormManager
{
private static Form currentForm=null;
public static Form CurrentForm
{
get
{
return currentForm;
}
set
{
this.currentForm=value;
if (this.currentForm!=null)
currentForm.Disposed+=(s,e)=>{FormManager.currentForm=null;};
}
}
}
//at each form
.
.
.
public void TryShowForm()
{
if (FormManager.CurrentForm==null)
FormManager.CurrentForm=this;
this.Show();
}