比如实例一个窗体,并打开它,代码如下 :
Form1 myF=new Form1();
myF.Show();它被放在一个按键的事件中。当点击这个按键后就打开这个窗体。如何保证当窗体被打开后,再点击按键后不再打开新的这个窗体,并且已经打开的窗体会成为焦点窗体。

解决方案 »

  1.   

    把myF放到一个全局变量里,每次Show之前先检查这个变量是否为空,是则new一个新窗体,否则直接Show!
      

  2.   

    Form1 myF=new Form1();
    放到外面
    在里面,你判断是否实例化。并写手写关闭事件
      

  3.   

    public class JC_BM_Info : Form
        {
            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();
      

  4.   

    tryForm2 f2 = null;
    private void button1_Click(object sender, EventArgs e)
    {
        if (f2 == null || f2.IsDisposed)
        {
            f2 = new Form2();
            f2.Show();
        }
        else
        {
            f2.Activate();
        }    
    }
      

  5.   

    vb中我是这么做的:Public Class Form2    Public Shared IsShow As Boolean = False
        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
      

  6.   

    private void button1_Click(object sender, EventArgs e)
            {
                if (frmTwo==null||frmTwo.IsDisposed)
                {
                    frmTwo = new Form();
                    frmTwo.Text = "新窗体";
                    frmTwo.Show();
                }
                else
                {
                    frmTwo.Activate();
                }
            }
    这种方法可行