2008年3月4日火曜日

MDIの子画面の最大化を抑止する。

今日ちょっとハマったのでメモ。

MDIの子画面がすべて同じスタイルならこんな問題は

発生しないのですが、子画面の中に最大化ボタンを

非表示にしている画面と表示している画面が混在した

場合に発生します。

例えば、Form1が親画面でそこから子画面Form2を最大化にして

呼び出し、さらにForm2から最大化を抑止した子画面Form3を

呼び出すと、なぜかForm3は最大化されてしまいます。

もちろん、Form3のプロパティMaximizeBox=Falseです。

これを最大化させないためには以下のようにすれば

とりあえず、回避できますが・・・

namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form frm = new Form3();
frm.MdiParent = this.MdiParent;
frm.Show();
frm.WindowState = FormWindowState.Normal;

}
}
}

つまり画面を呼び出した後に

frm.WindowState = FormWindowState.Normal;

を指定してやればいいだけです。

しかし、これをやると開いているすべての子画面のサイズが

強制的にNormalにされる様が描画されて、画面のちらつきが

たまりません。

それを回避する方法は今のところわかりませんorz

0 件のコメント: