1
我試圖阻止在匹配指定條件的列表框中選擇項目。經過一些MSDN研究後,我開始知道LBN_SELCHANGE是通過WM_COMMAND發送給它的父窗口的,所以我試圖用 鉤住OnNotifyMessage列表框發送的LBN_SELCHANGE消息,如下所示。列表框通知消息
public class SimpleListBox:ListBox
{
public SimpleListBox()
{
SetStyle(ControlStyles.EnableNotifyMessage, true);
}
private const int LBN_SELCANCEL = 0x3;
private const int LBN_SELCHANGE = 0x1;
protected override void OnNotifyMessage(Message m)
{
switch (m.Msg)
{
////http://msdn.microsoft.com/en-us/library/bb775161(VS.85).aspx
case (int)WindowsMessages.WM_COMMAND: //0x111
if (((int)m.WParam).LoWord() == LBN_SELCHANGE)
{
int i = 0;
}
break;
}
base.OnNotifyMessage(m);
}
}
但這似乎不工作,請指導我,如果我錯過了什麼。 在此先感謝。
這樣做,謝謝。 我只是想知道。如果我在 「case(int)WindowsMessages.WM_COMMAND:// 0x111」上設置斷點。斷點不會觸發。你有什麼線索爲什麼這不起作用。 再次感謝 – crypted 2010-01-18 07:41:45
使用WndProc()。家長通知消息通過向消息添加0x2000反映回控制。 – 2010-01-18 08:54:03
太棒了,這就是我想要的。謝謝。 – crypted 2010-01-18 12:15:20