我有一个自定义控件的设计器类,如下所示:
public class NavigationMenuItemDesigner : ParentControlDesigner
{
public override SelectionRules SelectionRules
{
get { return SelectionRules.None; }
}
protected override void WndProc(ref Message msg)
{
const int WM_LBUTTONDOWN = 0x0201;
const int WM_LBUTTONDBLCLK = 0x0203;
if (msg.Msg == WM_LBUTTONDOWN || msg.Msg == WM_LBUTTONDBLCLK)
{
ISelectionService ss = (ISelectionService)GetService(typeof(ISelectionService));
if (ss.PrimarySelection is NavigationMenuItem)
{
NavigationMenuItem item = (NavigationMenuItem)ss.PrimarySelection;
item.PerformClick();
return;
}
}
base.WndProc(ref msg);
}
}
当我点击自定义控件时,我想要触发PerformClick()
方法。它的工作原理,但我必须点击控件两次。首先设置焦点,然后第二次激活代码。
当我第一次点击它时,它看起来像这样:
然后,当我再次点击它时,它就能满足我的需求:
关于我在这里做错了什么的想法?我应该不使用WndProc
吗?
答案 0 :(得分:0)
您需要处理控件的单击事件,然后确定光标所在的节点并对其进行操作。您似乎正在尝试处理节点的点击事件,当控件没有焦点时,该事件不会被触发。