是否有一种简单的方法可以在Visual Studio窗体设计器中更改复杂窗体上控件的Tab键顺序。
我知道我可以选择Tab Order模式,它会显示所有带有Tab键索引的控件,但是在复杂表单的中间添加一个新控件并且必须重新选择每个控件都是一件很痛苦的事情。该表单再次设置新的Tab键顺序。我经常发现我不小心错过了一个控件,所以必须重新做一遍。
我在MSDN上看到,至少应该可以按Ctrl键点击我想要开始新控件重新排序的控件之前的控件,然后单击每个控件以设置新的Tab键顺序,但是我无法让它工作。 Ctrl-单击上一个控件,只需将其设置为Tab Index 0,这样就可以在整个表单上设置新的第一个控件。
我来自delphi背景,在delphi中编辑控件选项卡时,您会看到一个对话框,显示表单上所有控件的列表,您可以从列表中选择一个控件并在列表中向上或向下移动它。对于简单的更改(例如交换Tab键顺序或在表单中间添加新控件)更容易。 也许我错过了一些东西,并且可以轻松地做到这一点。如果在Visual Studio中没有,那么有一个模仿delphi功能的插件。
此致 布赖恩
答案 0 :(得分:3)
如果添加新控件并为其指定使用的Tab键顺序值,Visual Studio将自动替换其余控件。两个控件都具有相同的Tab键顺序,但它可以工作。
答案 1 :(得分:3)
如果控件太多,更改Tab键顺序的最简单方法是,只需在文本模式下打开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
在BEGIN
和END
之间,您的控件按其选项卡顺序排序。只需移动与您的TAB ORDER相对应的线。只需交换前两行,它就是取消按钮作为标签顺序1。
答案 2 :(得分:0)
如果您指出重新排列表单不是一个选项,您可以考虑使用CodeProject中的旧忠实用户:Automatic Runtime Tab Order Management for Windows Forms。它有点过时(例如没有强类型的通用集合),但效果很好。
项目中的TabOrderManager.cs
可以自行编译,你(我)不需要同伴IExtenderProvider
的所有设备和测试项目。
如果表单需要更改,您只需添加新控件,然后在InitializeComponent();
下面添加一个类似
new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.DownFirst);
希望它适合你。