Visual Studio 2010中的控制选项卡顺序



在Visual Studio窗体设计器中是否有一种简单的方法来更改复杂窗体上控件的制表符顺序?

我知道我可以选择选项卡顺序模式,它显示了所有的控件与他们的选项卡索引,但它是如此痛苦,在一个复杂的窗体中添加一个新的控件,必须重新选择窗体上的每个控件再次设置新的选项卡顺序。我经常发现我不小心错过了一个控制,所以不得不重新做一遍。

我在MSDN上读到,至少应该可以在我想开始新控件重新排序的地方Ctrl-Click之前的控件,然后单击之后的每个控件来设置新的选项卡顺序,但我不能让它工作。ctrl -单击前一个控件只是将该控件设置为制表索引0,因此它成为整个表单上新的第一个控件。

我来自delphi背景,在delphi中编辑控件选项卡命令时,您会得到一个对话框,显示表单上所有控件的列表,您可以从列表中选择一个控件并将其向上或向下移动列表。对于简单的更改,如交换选项卡顺序或在窗体中间添加新控件要容易得多。也许我遗漏了什么,这很容易做到。如果在Visual studio中不可用,是否有一个模仿delphi功能的插件。

的问候布莱恩

如果你添加了一个新的控件并给它一个标签顺序值,Visual Studio将自动替换剩下的。这两个控件都有相同的制表符顺序,但它可以工作。

最简单的方法来改变你的选项卡顺序,如果你有太多的控制,只需在文本模式下打开你的PROJECT.RC文件,并找到你的对话框配置....例如:

IDD_MESSAGE_LIST DIALOG 0, 0, 197, 162
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Message List"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,85,140,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,140,140,50,14
    CONTROL         "List1",IDC_MESSAGE_LIST,"SysListView32",WS_BORDER | WS_GROUP,5,5,165,120
    CONTROL         "",IDC_LINE,"Static",SS_ETCHEDHORZ,5,130,190,1
    CONTROL         "",IDC_CHECK_ALL,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,175,5,5,5
    CONTROL         "Tree1",IDC_MESSAGE_TREE,"SysTreeView32",TVS_HASBUTTONS | WS_BORDER 
END

BEGINEND之间,您的控件按其TAB ORDER进行排序。只需将相应的行移动到您想要TAB ORDER的位置。只需交换前两行,它将取消按钮作为制表符顺序1。

当您指出重新排列表单不是一个选项时,您可以考虑使用CodeProject中的旧忠实版本:Windows窗体的自动运行时选项卡顺序管理。它有点过时了(例如,没有强类型泛型集合),但它工作得很好。

项目中的TabOrderManager.cs可以自己编译,您(I)不需要配套的IExtenderProvider和测试项目的所有设备。

如果表单需要更改,您可以添加新的控件,并在InitializeComponent();下面添加一个调用,如

new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.DownFirst);

希望它适合你。

最新更新