TextBoxes和NumericUpDowns具有奇怪的属性,一旦选中它们就不允许你取消选择它们。当我的用户选择NumericUpDown并单击表单上的else-where时,应取消选择NumericUpDown。
不幸的是,事实并非如此。目前我只是处理表单上所有其他控件的MouseDown事件(如面板和实际表单本身),只是调用随机标签的Focus方法从NumericUpDown中删除焦点。但是,这不能应用于菜单项或滚动条。
必须有更好的方法来做到这一点。用户可能想要滚动面板而不是NumericUpDown并直观地单击Panel然后使用滚轮,但是当前会滚动NumericUpDown,因为它仍然具有焦点。
感谢阅读。
编辑:问题仍未解决。
答案 0 :(得分:1)
通常,Panel Control是一个不可聚焦的控件。因此,单击Panel将不会从TextBox或NumericUpDown Countrol中删除焦点。
解决方法可以是,在面板上放置一个按钮并将其移离视图,例如设置其x = -100和y = -100。不要设置visible = false。
现在,只要用户点击Panel(Panel_Click事件),就将焦点(Button.Focus())设置为该按钮。通过这种方式,面板可以通过滚轮滚动。
答案 1 :(得分:0)
将数字框包含在某种面板中,然后执行
panel1.MouseHover += new EventHandler(panel1_MouseHover);
private void panel1_MouseHover(object sender, EventArgs e)
{
if (numericUpDown1.Focused)
{
panel1.Focus();
}
}
我测试了它并且它有效。!