当前位置:  开发笔记 > 编程语言 > 正文

如何确定表单上的哪个控件有焦点?

如何解决《如何确定表单上的哪个控件有焦点?》经验,为你挑选了2个好方法。

我在这里读过其他地方,要在文本框中捕获"Enter"键,并使用它就像按下按钮我应该将表单的KeyPreview属性设置为true并检查KeyDown的值.

我希望能够在几个TextBox控件上使用此功能,每个控件都与不同的Button相关联.

我的问题是如何知道哪个控件导致了KeyPress事件?发件人被列为表单本身.

G



1> G-...:

我找到了一个似乎有效的解决方案.

    private void DeviceForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyValue == 13 && tstxtDeviceFilter.Focused)
        {
            filterByDeviceSN();
        }
    }

我不禁想到必须有更好的方法!

- 编辑 - 编辑 - 编辑 - 编辑 - EDIT--

好吧,看了下面的建议(谢谢),我在这种情况下找到了一种"更好"的方式.

    this.tstxtDeviceFilter.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tstxtDeviceFilter_KeyDown);

    private void tstxtDeviceFilter_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyValue == 13)
        {
            filterByDeviceSN();
        }
    }

显然,通过将事件捕获到文本框本身而不是表单上,我不需要担心焦点.再一次,我觉得因为没想过这么久而感到愚蠢!



2> Binary Worri..:

每个表单都有一个"Accept"按钮和"Cancel"按钮的属性,这些是当用户分别按下enter和escape时"点击"的按钮.

您可以在每个控件获得焦点时更改默认按钮(每个按钮可以有一个焦点事件处理器,并与一组文本框共享)

如果你这样做,那么按钮的外观会改变,从而为用户提供一个视觉提示,告诉他们哪个按钮是默认按钮.

或者,如果您不想这样做,可以使用"ActiveControl"属性,并测试以查看它属于哪组文本框.

您是否问过自己,如果默认按钮不是其中一个文本框,应该怎么做?

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有