在C#中,主窗体的控件后面打开了子窗体

莫西

我有一个内部有许多控件的MDI表单,如按钮,图像,标签,下拉列表等。我已经将表单属性设置为isMDIContainer = true。当我单击表单内的按钮时,将在父级内部打开另一个表单。它的开口,但不幸的是它在所有控件后面的开口。如何使子窗体在主窗体的所有控件前面打开?

    Form2 childForm = new Form2();            
    childForm.MdiParent = this;
    childForm.Activate();          
    childForm.Show();
国王王

通常我们不会将任何子控件添加到中Mdi Form将aForm用作an时Mdi Form,它应包含的唯一子对象是MdiClientMdiClient将包含您的child forms所有控件都应放在上Child forms但是,如果您愿意,我们仍然可以使其正常运行

有一个默认MdiClient包含在Mdi Form我们可以在的Controls集合中找到它Mdi Form这是的类型MdiClient这将由您的所有其他控件所涵盖Mdi Form,这就是为什么Child forms默认情况下无法将置于首位的原因。为了解决这个问题,只是我们要访问MdiClient和调用BringToFont(),每当没有任何Child form的存在Visible,我们称之为SendToBack()MdiClient显示你的(按钮,图像,标签,下拉菜单等)的其他控件。这是供您测试的代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        IsMdiContainer = true;
        //Find the MdiClient and hold it by a variable
        client = Controls.OfType<MdiClient>().First();
        //This will check whenever client gets focused and there aren't any
        //child forms opened, Send the client to back so that the other controls can be shown back.
        client.GotFocus += (s, e) => {
            if (!MdiChildren.Any(x => x.Visible)) client.SendToBack();
        };
    }
    MdiClient client;
    //This is used to show a child form
    //Note that we have to call client.BringToFront();
    private void ShowForm(Form childForm)
    {
        client.BringToFront();//This will make your child form shown on top.
        childForm.Show();            
    }
    //button1 is a button on your Form1 (Mdi container)
    //clicking it to show a child form and see it in action
    private void button1_Click(object sender, EventArgs e)
    {
        Form2 f = new Form2 { MdiParent = this };
        ShowForm(f);         
    }     
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从C#窗体中删除控件

来自分类Dev

关闭子窗体,然后单击C#.net中的用户控件中的按钮,打开另一个窗体?

来自分类Dev

返回具有打开其他窗体(C#)的窗体的主窗体,然后关闭其他窗体?

来自分类Dev

C#父窗体打开子窗体,在父窗体关闭后调用子函数

来自分类Dev

VBA遍历主窗体上的控件,而忽略子窗体

来自分类Dev

VBA遍历主窗体上的控件,而忽略子窗体

来自分类Dev

使用主窗体c#中的按钮在用户控件中调用事件

来自分类Dev

引用子窗体中的控件

来自分类Dev

在应用程序中修改主窗体及其控件。运行C#

来自分类Dev

从ASP.net C#中的主窗体调用用户控件公共功能的问题

来自分类Dev

在主窗体 c# 中从用户控件创建媒体播放器按钮

来自分类Dev

C#窗体继承-父窗体中的函数需要在子窗体中调用重写的函数

来自分类Dev

如何在父窗体中更改子窗体控件的属性

来自分类Dev

从主窗体运行VBA以验证子窗体中的总计

来自分类Dev

如何从子窗体打开窗体并在主窗体面板中显示

来自分类Dev

C#锁定Windows窗体控件

来自分类Dev

从 C# 的窗口窗体中打开我的代码的 CLI 版本

来自分类Dev

C# 从 UserControl 更改主窗体的 UI

来自分类Dev

如何访问子窗体上的文本框控件的值,其中子窗体本身只是主窗体的另一个子窗体上的控件

来自分类Dev

在线程中打开新的子窗体

来自分类Dev

如何在C#中从父窗体访问子窗体的静态变量

来自分类Dev

C#子窗体未返回程序中的预期点(父窗体)

来自分类Dev

在C ++ Windows窗体应用程序中打开新窗体

来自分类Dev

从C#的子窗体调用类实例中的函数

来自分类Dev

截取动态打开的窗口窗体 c#

来自分类Dev

如何从用户控件的主窗体中读取属性

来自分类Dev

从从父窗体打开的模态窗体中打开窗体

来自分类Dev

C#父级-子窗体

来自分类Dev

从另一个子窗体访问子窗体中的控件

Related 相关文章

  1. 1

    从C#窗体中删除控件

  2. 2

    关闭子窗体,然后单击C#.net中的用户控件中的按钮,打开另一个窗体?

  3. 3

    返回具有打开其他窗体(C#)的窗体的主窗体,然后关闭其他窗体?

  4. 4

    C#父窗体打开子窗体,在父窗体关闭后调用子函数

  5. 5

    VBA遍历主窗体上的控件,而忽略子窗体

  6. 6

    VBA遍历主窗体上的控件,而忽略子窗体

  7. 7

    使用主窗体c#中的按钮在用户控件中调用事件

  8. 8

    引用子窗体中的控件

  9. 9

    在应用程序中修改主窗体及其控件。运行C#

  10. 10

    从ASP.net C#中的主窗体调用用户控件公共功能的问题

  11. 11

    在主窗体 c# 中从用户控件创建媒体播放器按钮

  12. 12

    C#窗体继承-父窗体中的函数需要在子窗体中调用重写的函数

  13. 13

    如何在父窗体中更改子窗体控件的属性

  14. 14

    从主窗体运行VBA以验证子窗体中的总计

  15. 15

    如何从子窗体打开窗体并在主窗体面板中显示

  16. 16

    C#锁定Windows窗体控件

  17. 17

    从 C# 的窗口窗体中打开我的代码的 CLI 版本

  18. 18

    C# 从 UserControl 更改主窗体的 UI

  19. 19

    如何访问子窗体上的文本框控件的值,其中子窗体本身只是主窗体的另一个子窗体上的控件

  20. 20

    在线程中打开新的子窗体

  21. 21

    如何在C#中从父窗体访问子窗体的静态变量

  22. 22

    C#子窗体未返回程序中的预期点(父窗体)

  23. 23

    在C ++ Windows窗体应用程序中打开新窗体

  24. 24

    从C#的子窗体调用类实例中的函数

  25. 25

    截取动态打开的窗口窗体 c#

  26. 26

    如何从用户控件的主窗体中读取属性

  27. 27

    从从父窗体打开的模态窗体中打开窗体

  28. 28

    C#父级-子窗体

  29. 29

    从另一个子窗体访问子窗体中的控件

热门标签

归档