0

TextBoxes 和 NumericUpDowns 有一个奇怪的属性,即一旦它们被选中就不允许您取消选择它们。当我的用户选择 NumericUpDown 并单击表单上的其他位置时,应取消选择 NumericUpDown。

不幸的是,这种情况并非如此。目前,我只是在处理表单上所有其他控件的 MouseDown 事件(如面板和实际表单本身),并且只是调用随机标签的 Focus 方法来从 NumericUpDown 中移除焦点。但是,这不能应用于菜单项或滚动条。

必须有更好的方法来做到这一点。用户可能希望滚动面板而不是 NumericUpDown 并直观地单击面板,然后使用滚轮,但目前这将滚动 NumericUpDown,因为它仍然具有焦点。

谢谢阅读。

编辑:问题仍未解决。

4

2 回答 2

1

通常,面板控制是不可聚焦的控制。因此,单击 Panel 不会从 TextBox 或 NumericUpDown 控件中移除焦点。

解决方法可以是,在面板上放置一个按钮并将其从视图中移开,例如设置其 x = -100 和 y = -100。不要设置可见 = 假。

现在,每当用户单击面板(Panel_Click 事件)时,将焦点(Button.Focus())设置为该按钮。这样,面板将可以通过滚轮滚动。

于 2011-08-25T10:42:19.097 回答
0

将数字框括在某种面板中,然后执行

panel1.MouseHover += new EventHandler(panel1_MouseHover);

private void panel1_MouseHover(object sender, EventArgs e)
        {
            if (numericUpDown1.Focused)
            {
                panel1.Focus();
            }
        }

我测试了它,它的工作原理。!

于 2011-08-25T04:54:21.130 回答