如何避免在.NET Windows窗体中创建重复的表单?

Tin*_*Tin 4 .net c# menu winforms

我正在使用.NET Windows Forms.我的MDI父表单包含菜单.如果单击菜单,将显示表单.到现在为止没问题.

UserForm uf = new UserForm();
uf.Show();
uf.MdiParent = this;
Run Code Online (Sandbox Code Playgroud)

如果我再次单击该菜单,则会创建另一个表单副本.如何解决这个问题?

Han*_*ant 5

最简洁的方法是简单地跟踪表单实例的生命周期.通过订阅FormClosed事件来这样做.例如:

    private UserForm userFormInstance;

    private void showUserForm_Click(object sender, EventArgs e) {
        if (userFormInstance != null) {
            userFormInstance.WindowState = FormWindowState.Normal;
            userFormInstance.Focus();
        }
        else {
            userFormInstance = new UserForm();
            userFormInstance.MdiParent = this;
            userFormInstance.FormClosed += (o, ea) => userFormInstance = null;
            userFormInstance.Show();
        }
    }
Run Code Online (Sandbox Code Playgroud)