请指导和帮助我。
我有一个MDI父窗体,它的中心有一个标签(在中心显示应用程序名称)。在此MDI父窗体中打开窗体时,此标签应显示在新打开的窗体的背面,但在显示子窗体时,标签将显示在新打开的窗体的前面(看起来新打开的窗体位于标签和MDI父窗体之间)。
怎么管理,请指点一下。
谢谢
发布于 2010-12-04 04:46:18
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);
}
}发布于 2010-12-03 17:21:43
这将隐藏标签,而您有活动的MDI子项,一旦不再有活动的子项,则再次显示它。
private void Form1_MdiChildActivate(object sender, EventArgs e)
{
if (ActiveMdiChild != null)
label1.SendToBack();
else
label1.BringToFront();
}我希望这能帮到你。
发布于 2010-12-03 17:23:37
问题是您的标签没有添加到MdiClient (即灰色的Mdi容器),而是添加到了表单。
但不幸的是,AFAIK不可能向MdiClient添加控件。
唯一的方法是在MdiClient的Paint事件上绘制您想要的内容,如本文所建议的:
http://www.vbaccelerator.com/home/NET/Code/Libraries/Windows/MDI_Client_Area_Painting/article.asp
https://stackoverflow.com/questions/4343682
复制相似问题