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