2

VB.Net vs2008でMDI子の1つのインスタンスを開く必要があります...このコードは、同じMDI子の複数の複製を開きます。私はこの答えを得ましたc#の重複したMDI子フォームを防止しますが、VB.Netvs2008のフォームは見つかりませんでした

Dim myChild As New Form1()
myChild.MdiParent = Me
myChild.Show()
4

3 に答える 3

4

これは、FredrikMörkのコードのVB.Netバージョンです。

For Each f As Form In Application.OpenForms
  If TypeOf f Is Form1 Then
    f.Activate()
    Return
  End If
Next

Dim myChild As New Form1
myChild.MdiParent = Me
myChild.Show()
于 2012-10-11T15:32:40.447 に答える
1

これを試して

private void button1_Click(object sender, EventArgs e)
{
   FormCollection fc = Application.OpenForms;
   bool FormFound = false;
   foreach (Form frm in fc)
   {
      if (frm.Name == "Form2")
      {
          frm.Focus();
          FormFound = true;
      }
   }

   if (FormFound == false)
   {
       Form2 f = new Form2();
       f.Show();
    }
}
于 2013-09-10T12:53:24.703 に答える
0

Generics(C#およびVB.netオプションの下)を使用してメソッドを実装できます。これは、さまざまなMDIフォームを開く必要がある場合に役立ちます。

VB.NET

Public Sub Open_MDI(Of T As {New, Form})(bMultipleInstances As Boolean)
    If bMultipleInstances = False Then
        For Each f As Form In Me.MdiChildren
            If TypeOf f Is T Then
                If (f.WindowState = FormWindowState.Minimized) Then
                    f.WindowState = FormWindowState.Maximized;
                End If

                f.Activate()
                Exit Sub
            End If
        Next
    End If

    Dim myChild As New T()
    myChild.MdiParent = Me
    myChild.Show()
End Sub

次のように使用してください(それらを防ぐためにFalse示してください)bMultipleInstances

Open_MDI(Of Form2)(False)

C#

private void OpenMDI<T>(bool multipleInstances)
    where T : Form, new()
{
    if (multipleInstances == false)
    {
        // Look if the form is open
        foreach (Form f in this.MdiChildren)
        {
            if (f.GetType() == typeof(T))
            {
                // Found an open instance. If minimized, maximize and activate
                if (f.WindowState == FormWindowState.Minimized)
                {
                    f.WindowState = FormWindowState.Maximized;
                }

                f.Activate();
                return;
            }
        }
    }

    T newForm = new T();
    newForm.MdiParent = this;
    newForm.Show();
}

次のように使用してください(それらを防ぐために示しfalseてください)multipleInstances

OpenMDI<Form2>(false);
于 2018-04-14T00:58:37.043 に答える