我想让我的自定义组合框继承自ContainerControl。我用this文章作为基础,但重写了它,但我使用ToolStripControlHost,我自己的自定义ListBox &一个ToolStripDropDown。自定义组合框不能正常关闭
现在ComboBox是一个按钮,您可以通过点击来显示包含我的ListBox的DropDown,并且可以覆盖OnMouseClick。
的问题,开始时我尝试关闭的下拉列表中,用下拉的“自动关闭”属性设置为true,则下拉如果你点击下拉(包括按钮)之外的某处关闭...
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
/* listboxControl = ToolStripDropDown */
if (!listboxControl.Visible)
{
listboxControl.Show(this, GetDropLocation(), ToolStripDropDownDirection.BelowRight);
//listbox.Capture = true;
}
}
这是点击按钮的代码..所以如果点击它会发生什么? 如果显示DropDown,它首先关闭DropDown,然后触发OnMouseClick事件。含义:listboxControl.Visible已经是假的&它会再次显示DropDown。所有这些都导致了一个快速的公开。
我一直坚持这个问题一段时间了,谷歌似乎不知道这个问题很多(CodeProject上的那篇文章也有同样的错误)。
我试过的是禁用AutoClose并在显示DropDown后捕获鼠标,这部分工作,但它影响我托管的ListBox的工作。 ListBox包含一组控件(项目),这些项目具有悬停绘画效果。在ListBox控件中捕获鼠标可以防止OnMouseEnter被触发。
所有输入将不胜感激!