gpt4 book ai didi

vb.net - 多个面板和组框以及选项卡顺序维护

转载 作者:行者123 更新时间:2023-12-02 15:29:43 26 4
gpt4 key购买 nike

我有一个由我的老板设计的 VB.NET (2005) 应用程序,它使用 100 多个输入和显示控件(文本框、组合框等),其中许多都带有关联的标签。我的老板要求我设置 Tab 键顺序,然后捕获按键,以便用户可以使用 Enter 来导航控件。我有 2 个这样的应用程序可以使用。

对于 Tab 键顺序,我无法使用 View/TabOrder 功能,因为显示了很多蓝色的小 tabindex 弹出窗口,我看不到表单上的任何可单击的控件。我尝试单击“通过”弹出窗口并取得了一些成功,但它仍然没有给我我想要的选项卡顺序。 CodeSMART 附带的选项卡助手也没有给我想要的结果,所以我可以使用它。

此用户控件上的控件分布在许多组中,这些组又分布在多个拆分容器面板中。主 splitcontainer 中的第一个面板有 3 个主要组框,可通过工具条按钮进行选择(将所需的组框设置为可见,并将其他组框设置为不可见。)

示例:

Private Sub ShowMainPanel()
'Note: Panels are groupboxes
Me.MaterialPanel.Visible = False
Me.HaulPanel.Visible = False
Me.MainPanel.Visible = True

End Sub

每个组框都包含更多组框,每个组框包含 1 到 15 个控件。有些是只读的,但其他的则需要用户提供信息。所需控件的制表位设置为 true。

因此,我手动将每个主组面板选项卡索引设置为 0 到 2。然后,对于第一个组框(主面板),我为其中包含的每个控件和组框设置选项卡索引。非容器类型控件的选项卡索引设置为 0 到 25,然后主面板上的组框(子组)为 26 到 48。然后,我转到这些子组中的每个控件,并为这些控件设置选项卡索引,从0 到 Control.count-1 为该组。

总之,我的 Tab 键顺序如下所示(缩写):

mainPanel = 0
1st fields = 0.0
2ndfield = 0.1
3rd field = 0.2
1st group = 0.3
1st field in 1st grp1 = 0.3.0
2nd field in 1st grp1 = 0.3.1
2nd group = 0.4
1st field in 1st grp2 = 0.4.0
2nd field in 1st grp2 = 0.4.1
materialPanel = 1
1st fields = 1.0
2ndfield = 1.1
3rd field = 1.2
1st group = 1.3
1st field in 1st grp1 = 1.3.0
2nd field in 1st grp1 = 1.3.1
2nd group = 1.4
1st field in 1st grp2 = 1.4.0
2nd field in 1st grp2 = 1.4.1

注意:例如,我实际上并未输入 1.4.0 作为 tabindex,而是为控件输入 0,为子组输入 4,为主组输入 1。

然后,我根据 Tab 键顺序通过“文档大纲”面板设置 zorder。

完成所有这些后,我终于能够获得我想要在主面板上使用的 Tab 键顺序。

但是当我将相同的方法应用于其他 2 个组框(materialPanel 和 haulpanel)时,选项卡完全被忽略。选项卡在应用程序中根本不起作用。对于第二个到主组框(MaterialPanel 和 HaulPanel)。该应用程序是控制库,因此我在调试时使用内置的 UserTestContainer,并且当显示第 2 个组框之一时,Tab 键将焦点从应用程序移出并移入测试容器。

在第一个组框(MainPanel)上时不会发生这种情况。效果很好。

布置这些东西花了我大约 3-4 个小时的时间,这是一项乏味的工作。由于控件数量较多,该应用程序很难使用,因为只要对表单设计器进行更改,就需要 15-20 秒的时间来处理它。

有人知道这里发生了什么吗?

最佳答案

听起来 GroupBox 被分配了表单上的最后一个选项卡索引,因此输入焦点的下一个可行选项是表单本身,在本例中是测试容器。

您可以捕获 KeyPreview 事件吗?取消按键,然后仅使用内部维护的控件顺序集合来给予焦点。考虑到控件的数量,似乎您应该在代码中完成大部分操作。如果您使用 Groupbox/Panel 的 .Controls 属性并通过迭代该集合并找到所需的确切控件来处理焦点,维护将会容易得多。

关于vb.net - 多个面板和组框以及选项卡顺序维护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1110636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com