2016-09-28 12 views
0

私はカスタムMDI親フォームとカスタム子フォームを持っていて、mdi子フォームが最大化されているときにそれ自身のテキスト+ mdi子フォームのテキストであるmdiフォームにタイトルを設定したいとします。だからそれはどうやってできるの? MDI子のカスタマイズされたMDIテキストとカスタマイズされたMDI子テキストをMDIのタイトルバーに結合する方法は?

enter image description here

通常の状態では、それが正しく仕事で形成します。フォームの状態が最大化されるが、MDIの子のテキストは、MDI親フォームのテキストで示されていない見ることができます。この画像で

enter image description here

。あなたがMDI子を最大化すると

+0

はWinformsのためにこれは、役立ちますか? – auburg

+0

はいこれはwinformsです – Hardik

+0

これはすでにその方法で動作していますか? Doen'tは余分な何かをする必要があります。 – Berkay

答えて

0

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 
    } 
} 

Form1は、MDIの親である、TestForm(FRM)はMDIの子である)、フォームのSize_Changedイベントをお試しください希望は

+0

ありがとうございました。あなたのコードは動作しますが、frm_sizechangedイベントのみ(子フォームがアクティブです)が1回ですが、mdi子フォームが最大化しているときにそのイベントを呼び出したいと思います。 – Hardik

+0

一度に何を意味しますか?それはサイズの変化を追跡し、条件が最大化されるかどうかを調べます。 @ハディク – Berkay

+0

はい、ありがとうございます。私はコードでいくつかの間違いがありました。もう一度ありがとう。 – Hardik

1

、MDIコンテナのテキストはのように表示されます。

ParentText - [ChildText] 

だからあなたの編集に基づいて、私はあなたが以下のようなCustomTextプロパティがあるとします。

private string CustomText 
{ 
    get { return toolStripLabel1.Text; } 
    set { toolStripLabel1.Text = value; } 
} 

をフォームのカスタムタイトルバーを表示します。あなたが持っている場合、それはあなたがActivatedとMDI子フォームの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子を示します。
+0

ありがとうReza Aghaei、このコードは私のために働いていますが、mdiの子フォームが最大化されているときにテキストを変更します。 – Hardik

+0

デフォルトでは、親のテキスト+子のテキストが最大化状態で表示されます。 –

+0

この操作は、MDIフォームをカスタマイズしてMDI子フォームをカスタマイズして実行しています。それは私が問題に言及している。 – Hardik

関連する問題