Winforms 进行渐进式披露时如何处理选项卡顺序?

Winforms 进行渐进式披露时如何处理选项卡顺序?,winforms,Winforms,我正在将VB6应用程序转换为Winforms,在VB6中,我们经常使用一种技术,即某些文本框只有在文本框前面输入特定值时才可见 问题是使文本框可见的决定只在验证事件中做出,此时下一个获得焦点的控件已经确定。当我们使依赖文本框可见时,焦点已经跳过控件 在VB6中,我们可以通过在两个文本框之间放置一个空的、透明的usercontrol,并在usercontrol的gotfocus事件中在键盘缓冲区中添加一个额外的选项卡来解决这个问题。令人惊讶的是,它工作得相当好。它甚至可以在您将tab键向后移动时工

我正在将VB6应用程序转换为Winforms,在VB6中,我们经常使用一种技术,即某些文本框只有在文本框前面输入特定值时才可见

问题是使文本框可见的决定只在验证事件中做出,此时下一个获得焦点的控件已经确定。当我们使依赖文本框可见时,焦点已经跳过控件

在VB6中,我们可以通过在两个文本框之间放置一个空的、透明的usercontrol,并在usercontrol的gotfocus事件中在键盘缓冲区中添加一个额外的选项卡来解决这个问题。令人惊讶的是,它工作得相当好。它甚至可以在您将tab键向后移动时工作。由于某些原因,usercontrol被忽略,焦点返回到第一个文本框。毫不奇怪,我希望Winforms中有更好的解决方案


有人成功地处理过这种情况吗?

我相信您会发现WinForms中的东西“正常工作”

在决定哪个字段应该接收焦点之前,将触发验证事件-这允许事件在验证失败时强制将焦点返回到原始控件

查看MSDN中事件的详细信息,以了解哪些事件是按哪个顺序触发的


或者,可能验证事件在工作流中太晚了-您是否考虑过在相关字段中的值合适时立即披露控件,而不等待焦点更改?我已经做到了这一点——尽管只使用了复选框——而且用户体验非常理想。

我相信您会发现WinForms中的东西“正常工作”

在决定哪个字段应该接收焦点之前,将触发验证事件-这允许事件在验证失败时强制将焦点返回到原始控件

查看MSDN中事件的详细信息,以了解哪些事件是按哪个顺序触发的


或者,可能验证事件在工作流中太晚了-您是否考虑过在相关字段中的值合适时立即披露控件,而不等待焦点更改?我已经做到了这一点——尽管只使用了复选框——用户体验非常理想。

我在一个winform应用程序中遇到了类似的问题,我需要一个隐藏的文本框,以便在将控件放入选项卡顺序时根据上一个控件的值显示该文本框,以便它能够获得焦点。我最初的解决方案是设置一个类级变量,该变量将与两个控件上的GotFocus和LostFocus(或Enter/Exit)一起使用,以确定上一个控件是否丢失了焦点,并强制将焦点设置为下一个控件。这不是一个可靠的解决方案,但仍然是一个选择

不过,我目前的解决方案效果要好得多。我需要为初始控件设置一个搜索按钮。此按钮在两个控件之间按制表符顺序排列。因为按钮将从第一个控件获取焦点,所以当第一个控件验证时,它将给第二个控件显示自己的时间


希望这能有所帮助。

我在winform应用程序中遇到了类似的问题,我需要一个隐藏的文本框,以便在将控件按选项卡顺序放置时,根据上一个控件的值显示该文本框,以便获得焦点。我最初的解决方案是设置一个类级变量,该变量将与两个控件上的GotFocus和LostFocus(或Enter/Exit)一起使用,以确定上一个控件是否丢失了焦点,并强制将焦点设置为下一个控件。这不是一个可靠的解决方案,但仍然是一个选择

不过,我目前的解决方案效果要好得多。我需要为初始控件设置一个搜索按钮。此按钮在两个控件之间按制表符顺序排列。因为按钮将从第一个控件获取焦点,所以当第一个控件验证时,它将给第二个控件显示自己的时间


希望这有帮助。

复选框起作用,因为它是一个二进制值,用户一选中复选框,您就可以立即采取行动。然而,对于文本框,您确实需要完整的输入,然后才能决定是否应显示下一个字段。在验证事件发生之前,确定下一个获得焦点的控件。我有一个解决方案,它可以在任何情况下工作,除非您移动tab键并看到一个字段。我将在今天晚些时候发布它。复选框起作用,因为它是一个二进制值,您可以在用户选中复选框后立即采取行动。然而,对于文本框,您确实需要完整的输入,然后才能决定是否应显示下一个字段。在验证事件发生之前,确定下一个获得焦点的控件。我有一个解决方案,它可以在任何情况下工作,除非您移动tab键并看到一个字段。我今天晚些时候再发。