首页 / 知识
关于c#:如何在单击Winform应用程序中的按钮后将焦点返回到上次使用的控件?
2023-04-13 19:06:00
How do you return the focus to the last used control after clicking a button in a winform app?我正在Windows窗体应用程序(C#)上工作,在该窗体中,用户正在窗体中输入数据。在编辑表单中的数据时,用户可以随时单击表单上的按钮之一以执行某些操作。默认情况下,焦点会移到单击的按钮上,因此用户必须重新单击要编辑的控件才能继续修改表单上的数据。我需要做的是在处理完按钮单击事件后,将焦点返回到上次编辑的控件。这是一个示例屏幕截图,说明了我在说什么:
用户可以在textbox1,textbox2,textbox3等中输入数据,然后单击按钮。我需要按钮才能将焦点返回到单击该按钮之前最近拥有焦点的控件。 我想知道是否有人能实现比我提出的更好的功能。这是我现在正在做的事情:
因此,基本上,我们在这里有一个指向最后输入的控件的类变量。窗体上的每个文本框都已设置,因此当控件获得焦点时将触发textBox_Enter方法。然后,当单击按钮时,焦点将返回到单击按钮之前具有焦点的控件。有人对此有更好的解决方案吗? 对于"简单性"可以尝试一下。
那么您不必担心手动装饰每个文本框(也不必担心一个)。 您可以执行以下操作 将按钮更改为标签,使其看起来像按钮。标签将永远不会成为焦点,您不必执行所有额外的编码。 您的方法看起来不错。如果您希望避免在添加的每个控件中添加事件处理程序,则可以创建一个递归例程,以将GotFocus侦听器添加到表单中的每个控件。这将适用于表单中的任何类型的控件,但是您可以对其进行调整以满足您的需求。
我想你在做什么很好。我唯一想改进的就是将每个控件在访问时存储到堆栈中。这将为您提供访问内容的完整时间表。 创建一个名为CustomTextBox的类,该类继承自TextBox。它有一个称为栈的静态变量。当文本框失去焦点时,将其推入堆栈。当您要查找最后一个集中控制时,只需从堆栈中弹出第一项即可。确保清除静态Stack变量。 是的,我承认这个要求有点不寻常。用户将进入此应用程序的某些信息存在于对旧文档的扫描中,这些文档位于几个不同的存储库中。这些按钮有助于查找和打开这些旧文档。当用户决定拉出包含更多信息以输入表单的文档时,很难预测用户在表单上的位置。尽管存在这些时髦的情况,但目的是使UI顺利进行。 您的实现看起来足够好-我想知道的是为什么您首先要这样做?将焦点循环回到第一个条目是否可取?最后一个文本框中的数据是否具有延展性,一旦他们单击该按钮就可以"记住"该数据?还是您具有按钮对特定文本框数据进行的某种操作-在那种情况下,焦点不应该转到后续控件上吗? 我有兴趣了解您为什么首先要这样做。 |
最新内容
相关内容
linux命令和应用程序?
linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,在linux下如何装应用程序?需要什么命令啊首先从官网下载hdf5,根据Python可以做桌面应用程序吗
Python可以做桌面应用程序吗,平台,系统,较大,标准,培训,界面,桌面,文档,入门,开发者,python可以做桌面应用程序!目前比较主流的几个GUI平台:1关于asp.net:为什么我的Web控件为空
关于asp.net:为什么我的Web控件为空?,关于asp.net:为什么我的Web控件为空?,控件,母版页,多视图,网站,Why is my web control null?我在as关于asp.net:为什么一个按钮控件需
关于asp.net:为什么一个按钮控件需要被单击两次?,关于asp.net:为什么一个按钮控件需要被单击两次?,回发,应用程序,服务器,闪烁,Why does关于Intranet:您建议使用哪种框架进
关于Intranet:您建议使用哪种框架进行快速安全的Web应用程序开发?,关于Intranet:您建议使用哪种框架进行快速安全的Web应用程序开发?,框我可以使用Python编写本机iPhone应
我可以使用Python编写本机iPhone应用程序吗?,我可以使用Python编写本机iPhone应用程序吗?,应用程序,编写,适用于,您可以,Can I write n关于背景:asp.net应用程序的“带外
关于背景:asp.net应用程序的“带外”处理技术,关于背景:asp.net应用程序的“带外”处理技术,执行,网站,缓存,博客,“Out of Band” Pro如何在Web应用程序中实现OpenID?
如何在Web应用程序中实现OpenID?,如何在Web应用程序中实现OpenID?,电子邮件地址,用户,注册,你是,How do I implement OpenID in my web关于身份验证:在ASP.NET中使用没有
关于身份验证:在ASP.NET中使用没有登录控件的自定义MembershipProvider,关于身份验证:在ASP.NET中使用没有登录控件的自定义Membersh关于vb6:ActiveX控件默认属性发现
关于vb6:ActiveX控件默认属性发现,关于vb6:ActiveX控件默认属性发现,属性,默认,控件,我将,ActiveX control default property discover如何将反射添加到C ++应用程序?
如何将反射添加到C ++应用程序?,如何将反射添加到C ++应用程序?,类型,原生,托管,的是,How can I add reflection to a C++ application如何单击vb6表单上的按钮?
如何单击vb6表单上的按钮?,如何单击vb6表单上的按钮?,控件,表单,我想,我有,How do I click a button on a vb6 form?我有一个带有ocx控