![](/img/trans.png)
[英]How to remove the MDI child text from the parent form title bar? C# .NET
[英]How to combine customized MDI Text & Customized MDI Child Text on MDI's Title Bar?
我有自定義的MDI父窗體和自定義的子窗體,並且我想在mdi子窗體最大化時在其本身的文本+ mdi子窗體的文本上設置標題。 那怎么可能呢?
MDI子窗體的正常狀態是可以正常工作的。
在此圖像中,您可以看到表單狀態為最大化,但未顯示MDI子級文本和MDI父級表單文本。
當您最大化一個MDI子級時,MDI容器的文本將顯示為:
ParentText - [ChildText]
因此,根據您的編輯,我想您具有一個CustomText
屬性,如下所示:
private string CustomText
{
get { return toolStripLabel1.Text; }
set { toolStripLabel1.Text = value; }
}
顯示表單的自定義標題欄。 然后,如果您的行為類似於表單的標准標題欄,則可以處理MDI子表單的Activated
和SizeChanged
事件,並使用BeginInvoke
以下方式設置CustomText
:
private void button1_Click(object sender, EventArgs e)
{
var f = new Form2() { Text = "Form2" };
f.MdiParent = this;
f.Activated += new EventHandler(f_Activated);
f.SizeChanged += new EventHandler(f_SizeChanged);
f.Show();
}
void f_SizeChanged(object sender, EventArgs e)
{
this.BeginInvoke(new Action(() => { CustomText = this.Text; }));
}
void f_Activated(object sender, EventArgs e)
{
this.BeginInvoke(new Action(() => { CustomText = this.Text; }));
}
注意
MdiChildActivate
對檢測MDI子項何時打開或關閉很有用。 ActiveMdiChild
屬性顯示活動的MDI子級。 嘗試使用Form的Size_Changed
事件,( Form1
是MDI父級, TestForm
(frm)是MDI子級)
TestForm frm;
private void Form1_Load(object sender, EventArgs e)
{
frm = new TestForm();
frm.MdiParent = this;
frm.SizeChanged += Frm_SizeChanged;
frm.Show();
}
private void Frm_SizeChanged(object sender, EventArgs e)
{
if (frm.WindowState == FormWindowState.Maximized) { // checks Form's Window state and return true if it is maximized (mdi child's event btw)
this.Text = this.Text + " " + frm.Text; // do what ever do you want in here
}
}
希望有幫助,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.