MDI父表单中的标签不会保留在子表单的背景中?

时间:2010-12-03 08:25:56

标签: c# .net winforms

请指导和帮助我。

我有一个MDI父表单,其中间有一个标签(以中心显示应用程序名称)。在此MDI父级中打开表单时,此标签应出现在新打开的表单的背面,但在显示子表单时,标签出现在新打开的表单的前面(看起来像新打开的表单在标签和MDI父级之间)。

如何管理它请指导我。

感谢

5 个答案:

答案 0 :(得分:4)

当您有活动的MDI时,这将隐藏标签。一旦没有活动的孩子,孩子就会再次显示它。

    private void Form1_MdiChildActivate(object sender, EventArgs e)
    {
        if (ActiveMdiChild != null)
            label1.SendToBack();
        else
            label1.BringToFront();
    }

我希望这会有所帮助。

答案 1 :(得分:3)

public partial class MyMdiForm : Form
{
    public MyMdiForm()
    {
        InitializeComponent();
        foreach (Control control in Controls)
        {
            if (control is MdiClient)
                control.Paint += mdiBackgroundPaint;
        }
    }

    private void mdiBackgroundPaint(object sender, PaintEventArgs e)
    {
        var mdi = sender as MdiClient;
        if (mdi == null) return;

        e.Graphics.Clip = new System.Drawing.Region(mdi.ClientRectangle);
        e.Graphics.DrawString("*** YOUR NAME HERE ***",this.Font,Brushes.Red,100F,100F);
    }
}

答案 2 :(得分:2)

问题是您的标签未添加到MdiClient(即灰色Mdi容器),而是添加到表单中。

但不幸的是,AFAIK,无法向MdiClient添加控件。

唯一的方法是在MdiClient的Paint事件中绘制您想要的内容,如本文所示:

http://www.vbaccelerator.com/home/NET/Code/Libraries/Windows/MDI_Client_Area_Painting/article.asp

答案 3 :(得分:0)

嗯,显然MDI父窗口的子控件的Z顺序有问题。 (父母的子控件包括您的标签以及任何MDI文档窗口。)

您尚未显示任何代码,因此我无法发布特定解决方案。或许可以查看SendToBack method:您可以尝试致电:

yourBackgroundLabel.SendToBack();

当您打开新的MDI(子/文档)窗口时。

答案 4 :(得分:0)

好吧,我做了一个把戏,对我有用。我们通常在中间写一个应用程序名称,并希望它显示给用户。许多人说,MdiParent仅适用于Forms,而不适用于其他工具,例如我们不能将标签/面板隐藏在MdiChild表单后面。

所以我要做的是用new FormfrmMdiBody写下所有内容,例如应用程序名称,联系人,电子邮件等,设置其formBorderStyle = None并设置所需的长度。表单StartPosition = CenterScreenTimer.Tick中,我写了以下内容:(在Load事件中对我不起作用)

  Dim NewMDIChild As frmMdiBody = MdiChildren.OfType(Of frmMdiBody)().SingleOrDefault
  If NewMDIChild Is Nothing Then
      NewMDIChild = New frmMdiBody
      NewMDIChild.MdiParent = Me
      NewMDIChild.Show()
  End If

上面的代码还检查是否打开了一个表单,以免在我们编写Timer.Tick事件时一次又一次打开很多frmMdiBody

如果我错了,有人可以纠正我。如果看起来很吸引人,我也会做更改。