| ■41743 / ) |
コントロールのフォーカスセットメッセージの取得について |
□投稿者/ プリ太 (74回)-(2009/09/29(Tue) 20:39:57)
|
分類:[C#]
いつもお世話になっております。 プリ太です。
コントロールに読み取り専用モードを追加したいので、コントロールを継承し、WndProcをoverrideして、 フォーカスを抜けようとしています。
RadioButton、TextBox、CheckBox、DataGridViewは抜けることができたのですが、 DomainUpDownとComboBoxがフォーカスを抜けることができません。 WndProcは以下のようにしています。 protected override void WndProc(ref Message m) { const int WM_PASTE = 0x0302; const int WM_LBUTTONDOWN = 0x201; const int WM_RBUTTONDOWN = 0x204; const int WM_MBUTTONDOWN = 0x207; const int WM_LBUTTONDBLCLK = 0x203; const int WM_MBUTTONDBLCLK = 0x206; const int WM_SETFOCUS = 0x0007;
switch (m.Msg) { case WM_LBUTTONDOWN: return; case WM_RBUTTONDOWN: return; case WM_MBUTTONDOWN: return; case WM_LBUTTONDBLCLK: return; case WM_MBUTTONDBLCLK: return; case WM_PASTE: return; case WM_SETFOCUS: return; }
base.WndProc(ref m); }
WndProcはRadioButton等と同じなのですが、コントロールを左クリックするとフォーカスがセットされます。 WM_SETFOCUSのreturnにブレイクポイントを設定しても、ブレイクに引っかかりません。
DomainUpDownとComboBoxのフォーカス取得時の値はRadioButton等と違うのでしょうか? または、DomainUpDownとComboBoxのフォーカス取得の値の取り方が違うのでしょうか?
環境はVS2005です。 宜しくお願いします。
|
|