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

在winform应用程序中单击按钮后,如何将焦点返回到上次使用的控件?

如何解决《在winform应用程序中单击按钮后,如何将焦点返回到上次使用的控件?》经验,为你挑选了1个好方法。

我正在使用Windows窗体应用程序(C#),用户在表单中输入数据.在编辑表单中的数据时,用户可以单击表单上的其中一个按钮来执行某些操作.默认情况下,焦点转到单击的按钮,因此用户必须单击返回要编辑的控件才能继续修改表单上的数据.我需要做的是在处理完按钮点击事件后将焦点返回到最后编辑的控件.这是一个示例截图,说明了我在说什么:

示例App屏幕截图

用户可以在textbox1,textbox2,textbox3等中输入数据,然后单击按钮.我需要按钮将焦点返回到最近在单击按钮之前具有焦点的控件.

我想知道是否有人有更好的方式来实现这个功能,而不是我想出的.这就是我现在正在做的事情:

   public partial class Form1 : Form
    {
        Control _lastEnteredControl;

        private void textBox_Enter(object sender, EventArgs e)
        {
            _lastEnteredControl = (Control)sender;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Do something here");
            _lastEnteredControl.Focus();
        }


    }

所以我们这里基本上是一个指向最后输入控件的类变量.设置表单上的每个文本框,以便在控件获得焦点时触发textBox_Enter方法.然后,当单击按钮时,焦点将返回到单击按钮之前具有焦点的控件.有人有更优雅的解决方案吗?



1> Joshua Turne..:

对于一点'简单'可能会尝试.

public Form1()
    {
        InitializeComponent();

        foreach (Control ctrl in Controls)
        {
            if (ctrl is TextBox)
            {
                ctrl.Enter += delegate(object sender, EventArgs e)
                              {
                                  _lastEnteredControl = (Control)sender;
                              };
            }
        }
    }

那么你不必担心手动装饰每个文本框(或者忘记一个文本框).

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