我试图以下列方式使用C#WinForms组合框:
a)常规使用:如果按下“向下箭头”按钮,下拉区域将打开,用户选择所需的项目 - 没有问题..
b)高级用法:如果用户点击下拉控件的可编辑区域,则会打开另一个带有高级选择机制的对话框。
目前,我正在调用combobox的onclick事件处理程序中的高级对话框。但是,现在经常使用DropDownbox不再可用了。即使您仅单击下拉箭头,高级对话框也会打开。
我找不到另一个我可以使用的事件,所以我假设我必须检查eventhandler,如果用户点击了控件的可编辑部分或控件的按钮。有任何想法如何有效地做到这一点?
感谢所有提示。
答案 0 :(得分:0)
有两件有趣的事件; DropDown和Click。以“正常”方式处理DropDown。对于Click,您可能实际上尝试处理MouseDown,其中包括坐标。将这些坐标(基于光标在整个屏幕上的位置)转换为相对于控件的位置,如果鼠标当前位于控件的箭头部分,则只需退出并允许默认行为发生。否则,显示更高级的下拉列表。
答案 1 :(得分:0)
我做到了(不是很漂亮,但它有效)
void comboBox_Click(object sender, EventArgs e)
{
// Calculate cursor position
Point pointCursorLocal = this.PointToClient(Cursor.Position);
// Calculate rectangle of working area.
Rectangle rectangle = this.comboBox.Bounds;
rectangle.Size = new Size(rectangle.Size.Width - 10, rectangle.Height);
// Check them
if (rectangle.Contains(pointCursorLocal))
// CLICK ON WORKING AREA ...
}