比如实例一个窗体,并打开它,代码如下 :
Form1 myF=new Form1();
myF.Show();它被放在一个按键的事件中。当点击这个按键后就打开这个窗体。如何保证当窗体被打开后,再点击按键后不再打开新的这个窗体,并且已经打开的窗体会成为焦点窗体。
Form1 myF=new Form1();
myF.Show();它被放在一个按键的事件中。当点击这个按键后就打开这个窗体。如何保证当窗体被打开后,再点击按键后不再打开新的这个窗体,并且已经打开的窗体会成为焦点窗体。
放到外面
在里面,你判断是否实例化。并写手写关闭事件
{
private static JC_BM_Info _instance = null;
private JC_BM_Info()
{
InitializeComponent();
BeforeShow();
}
public static JC_BM_Info Instance
{
get
{
if (_instance == null)
{
_instance = new JC_BM_Info();
}
return _instance;
}
}
^^^^^^^^^^^^^^^^^^^^^^^^^
}调用的时候:JC_BM_Info frm = JC_BM_Info.Instance;
frm.Show();
frm.Activate();
private void button1_Click(object sender, EventArgs e)
{
if (f2 == null || f2.IsDisposed)
{
f2 = new Form2();
f2.Show();
}
else
{
f2.Activate();
}
}
Public Shared mForm As Form Public Sub New() ' 此调用是 Windows 窗体设计器所必需的。
InitializeComponent() ' 在 InitializeComponent() 调用之后添加任何初始化。 If IsShow Then
mForm.Focus()
Throw New Exception("IsShow = True")
Else
IsShow = True
mForm = Me
End If
End Sub Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
IsShow = False
mForm.Dispose()
End Sub
End Class
调用的时候:
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim frm As New Form2
frm.Show()
Catch ex As Exception
'MsgBox(ex.Message)
End Try
End Sub
End Class
{
if (frmTwo==null||frmTwo.IsDisposed)
{
frmTwo = new Form();
frmTwo.Text = "新窗体";
frmTwo.Show();
}
else
{
frmTwo.Activate();
}
}
这种方法可行