关于c#:unable to bring mdi child form在前面 | 珊瑚贝

unable to bring mdi child form in front


我有一个 MDI 父表单,我在其中打开 MDI 子表单,但如果我再次单击,我不想重新打开它们,而不是我想专注于已经打开的特定 mdi 子表单,我通过单击我的菜单条来完成这项工作。我已经尝试了很多来成功地做到这一点,但一直都失败了。好吧,我的代码是:

这是一个方法…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private bool CheckMdiClientDuplicates(string WndCls)
{
    Form[] mdichld = this.MdiChildren;
    if (this.MdiChildren.Length == 0)
    {
        return true;
    }
    foreach (Form selfm in mdichld)
    {
        string str = selfm.Name;
        str = str.IndexOf(WndCls).ToString();
        if (str !=“-1”)
        {
            return true;
        }
    }
    return false;
}

我正在通过…

实现此方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void myToolStripMenuItem_Click(object sender, EventArgs e)
{
    MyForm f = new MyForm();//MyForm is the form on which i am working
    if (CheckMdiClientDuplicates(“MyNamespace.MyForm”) == true)
    {
        f.MdiParent = this;
        f.Show();
    }
    else
    {
        f.Activate();
        f.BringToFront();
    }
}

f 仍然是您的 new MyForm(),那么您希望 Activate 做什么呢?你需要得到你想要带到前面的实际表格和 Activate 那个。

此外,除非您打算使用它,否则您可能不想制作新的 MyForm。

  • @Sandy.Net 看看你的代码。您正在使用 MyForm f = new MyForm() 创建一个新表单,然后尝试执行 f.Activate()…
  • 那么在这种情况下我该怎么办先生?我应该先关闭from,然后用新实例重新打开它吗?
  • @Sandy.Net 您应该在现有的 MyForm 对象上调用 Activate() ,而不是创建一个新对象。最好的解决方案可能是从 CheckMdiClientDuplicates 返回一个 MyForm,而不是一个 bool。


你应该试试这个代码:

这是当您单击一个按钮以显示您的第一个表单时:

1
2
3
4
5
6
7
8
9
10
11
12
13
private void button1_click(object sender, EventArgs e){
        Form1 f1 = null;
        if (IsFormAlreadyOpen(typeof(Form1)) == null)
        {
            if (ActiveMdiChild != null)
            {
                ActiveMdiChild.Close();
            }
            f1 = new Form1();
            f1.MdiParent = this;
            f1.Show();
        }
}

方法:

1
2
3
4
5
6
7
8
9
10
public static Form IsFormAlreadyOpen(Type FormType)
    {
        foreach (Form OpenForm in Application.OpenForms)
        {
            if (OpenForm.GetType() == FormType)
                return OpenForm;
        }

        return null;
    }

单击另一个表单的下一步按钮时执行相同操作。


来源:https://www.codenong.com/12214267/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9679.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?