当用户试图打开已在mdiparent中打开的子窗体时,我希望避免多次出现子窗体。避免这种情况的一种方法是禁用控制器(在我的例子中是按钮),但是我也为这个函数提供了一个快捷键(ctrl+l)。因此,如果用户键入ctrl+l,将打开同一子窗体,我可以看到MDI中有两个子窗体。

private void leadsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        frmWebLeads formWeblead = new frmWebLeads();
        formWeblead.MdiParent = this;
        formWeblead.WindowState = System.Windows.Forms.FormWindowState.Maximized;
        formWeblead.Show();

    }

我想避免这个。我该怎么做?
在图像中,您可以看到子表单名称联机线索打开的次数是用户第一次使用菜单(线索)打开的次数和第二次使用快捷键打开的次数的两倍。我不想发生这种事。如果表单已打开,则应避免打开另一个相同的表单…怎么做?

最佳答案

如果我只想打开一个的话,我通常的做法是:

//class member for the only formWeblead
frmWebLeads formWebLead = null;

private void leadsToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (formWebLead == null)
    {
        formWeblead = new frmWebLeads();
        formWeblead.MdiParent = this;
    }

    formWeblead.WindowState = System.Windows.Forms.FormWindowState.Maximized;
    formWeblead.Show();
}

08-04 15:26