簡體   English   中英

如何在MDI的標題欄上組合自定義的MDI文本和自定義的MDI子文本?

[英]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子表單的ActivatedSizeChanged事件,並使用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; }));
}

注意

嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM