- PR -

WindowsFormのFormBorderStyleとサイズ変更時のちらつき(?)を防止するには

1
投稿者投稿内容
ヒトカゲ
会議室デビュー日: 2006/11/29
投稿数: 6
お住まい・勤務地: 大阪
投稿日時: 2006-12-01 15:02
こちらに投稿するのは初めてです。よろしくお願いします。

FormのFormBorderStyleとSizeを同時に変更することでタイトルバーのON/OFFを実現したいと思っているのですが、FormBorderStyle変更時とSize変更時の間に再描画が入るためウィンドウが一度大きくなったりするように見えてしまいます。

コードとしては次のような感じです。

 // this は System.Windows.Forms.Form です
 if (this.FormBorderStyle == FormBorderStyle.None) {
   this.FormBorderStyle = FormBorderStyle.Sizable;
   this.Size = new Size(this.Width - 8, this.Height - 8);
 } else {
   this.FormBorderStyle = FormBorderStyle.None;
   this.Size = new Size(this.Width + 8, this.Height + 8);
 }

何とか解決出来ないかと、
 (1) ダブルバッファリング
 (2) Form.SetStyleの各組み合わせのどれかで上手くいかないか
 (3) Thread Critical にして再描画を割り込ませない
などの手法を試してみましたが、(1)(2)ではどうもフォームのサイズ変更などの描画は対処出来ず、(3)はそれらしき事が出来る方法を見つけられませんでした。

どなたか解決方法をご存じの方がいらっしゃいましたらよろしくお願いします。

[ メッセージ編集済み 編集者: ヒトカゲ 編集日時 2006-12-01 15:06 ]

[ メッセージ編集済み 編集者: ヒトカゲ 編集日時 2006-12-01 15:06 ]
ヒトカゲ
会議室デビュー日: 2006/11/29
投稿数: 6
お住まい・勤務地: 大阪
投稿日時: 2006-12-01 16:05
引き続き調べていた所、別の方法でタイトルバーのON/OFFは実現出来るようでしたのでこちらを採用する事にします。

.NET Tips:タイトルバーを消す

お手数をお掛けしました。
またよろしくお願いします。

ヒトカゲ
会議室デビュー日: 2006/11/29
投稿数: 6
お住まい・勤務地: 大阪
投稿日時: 2006-12-01 22:15
引用:

引き続き調べていた所、別の方法でタイトルバーのON/OFFは実現出来るようでしたのでこちらを採用する事にします。


と一度書きましたが、先の FormBorderStyle を変更する方法と比べ、フォームのタイトルが消えてしまう(当たり前ですが…)点が問題で、再度この問題に当たることとなりました。

詳細は一つめの投稿の通りです。
解決方法をご存知の方がいらっしゃいましたらよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)