DOBON.NETプログラミング掲示板過去ログ
ListBoxの背景の再描画を止めるには?
題名: ListBoxの背景の再描画を止めるには?
著者: 雲
日時: 2006/12/31 22:30:34
ID: 18662
この記事の返信元:
(なし)
この記事への返信:
[18696]
Re[1]: ListBoxの背景の再描画を止めるには?
雲
2007/01/05 16:21:37
ツリーを表示
環境/言語:[C#]
分類:[.NET]
こんにちは。
.Net のコントロールの再描画について疑問な点があります。
例えば、Form であれば、resize 時に背景色の再描画を止めるためには、
// 再描画の際に、全画面をフラッシュしないようにする。
SetStyle(ControlStyles.Opaque, true);
というコードを書いておくと良いですが、ここで、Form 上に ListBox
を置いてみると、ListBox の中で Form (のResizeに伴う)再描画時に
何故か、ListBox が(ListBoxの)背景色で再描画されてしまいます。
ListBox を継承して、新しくクラスを作成し、Form の時と同様に
SetStyle(ControlStyles.Opaque, true);
を書いてみたりしたのですが、どうしても、ListBox 内の再描画が
とめることが出来ません。
何か、大きな勘違いをしているような気がするのですが。。。今ひとつ
良くわかりません。よろしければ、ヒントを頂けると嬉しいです。
よろしくお願いします。
題名: Re[1]: ListBoxの背景の再描画を止めるには?
著者: 雲
日時: 2007/01/05 16:21:37
ID: 18696
この記事の返信元:
[18662]
ListBoxの背景の再描画を止めるには?
雲
2006/12/31 22:30:34
この記事への返信:
(なし)
ツリーを表示
雲です。
いろいろ試していて、やっと解決をしました。
結論としては、ListBox は、WM_ERASEBKGND を
取得していないのですね。
仕方がないので、ListBox を継承して MyListBox を作成し、
その中で WM_ERASEBKGND を無視することで何とか所望の
動作とすることができました。
以下に、参考までにコードを書いておきます。
protected override void DefWndProc(ref Message m)
{
const int WM_ERASEBKGND = 0x0014;
if( m.Msg != WM_ERASEBKGND ){
base.DefWndProc(ref m);
}
}
# せめて、SetStyle(ControlStyles.Opaque, true);
# で同じ動作をして欲しかった。。。
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
こんにちは。
.Net のコントロールの再描画について疑問な点があります。
例えば、Form であれば、resize 時に背景色の再描画を止めるためには、
// 再描画の際に、全画面をフラッシュしないようにする。
SetStyle(ControlStyles.Opaque, true);
というコードを書いておくと良いですが、ここで、Form 上に ListBox
を置いてみると、ListBox の中で Form (のResizeに伴う)再描画時に
何故か、ListBox が(ListBoxの)背景色で再描画されてしまいます。
ListBox を継承して、新しくクラスを作成し、Form の時と同様に
SetStyle(ControlStyles.Opaque, true);
を書いてみたりしたのですが、どうしても、ListBox 内の再描画が
とめることが出来ません。
何か、大きな勘違いをしているような気がするのですが。。。今ひとつ
良くわかりません。よろしければ、ヒントを頂けると嬉しいです。
よろしくお願いします。