我有一个应用程序,我正在尝试模仿“软描述”文本框,例如为此站点上的标记和标题位置找到的文本框。
我这样做的方式主要是创建我的文本框,根据鼠标指针进入或离开控件时发生的情况,它会更新文本框的内容以获得效果。
问题在于,当我的表单首次显示时,鼠标光标会立即跳转到第一个文本框,这会删除标题,告诉用户文本框的用途。
如果我在文本框上关闭AcceptTab,那么一切都按预期工作,但用户失去了标签到文本框的功能。
有没有办法关闭文本框的自动选择?
答案 0 :(得分:2)
你可以在表格本身或者某些标签控件上使用this.Focus()吗?
答案 1 :(得分:2)
迟到但完美的解决方案是选择表格加载时的表格。
将此行添加到构造函数中会得到期望的结果。
this.Select();
但是当使用像OpenFileDialog这样的多线程控件时,如果你想取消对焦/取消选择文本框这个.Select()不起作用,所以我在表单中选择了一个按钮。
button1.Select();
答案 2 :(得分:0)
TabIndex属性控制选项的内容,在加载时,焦点转到第一个控件(由TabIndex排序),其中AcceptTab为true。您可以更改排序,以便您希望用户关注的控件最低(并且标签可以按照您的预期在控件中循环工作)。
或者,正如杰森建议的那样,你可以简单地在FormLoad事件中的任何控件或表单本身上调用Focus()。
答案 3 :(得分:0)
我在Jason的技术上使用了一个变体。首先,我创建了一个带有tabindex 0的虚拟文本框。这样,当显示表单时,将选择该文本框。接下来,我使虚拟文本框的宽度为零,因此它没有可见的组件。
但是,一旦加载了表单,我不希望用户能够切换到“不存在”文本框。因此,我添加了这两位:
//These functions prevent the textboxes from being implicitly selected.
private void dummyBox_Leave(object sender, EventArgs e)
{
dummyBox.TabStop = false;
}
private void Main_Enter(object sender, EventArgs e)
{
dummyBox.TabStop = true;
dummyBox.Select();
}
Main是我表单的名称。
希望这有助于某人。
Billy3