我有一个应用程序,我试图模仿的“软描述”文本框一样,这些发现的标签和标题的位置在这个网站上。我这样做的方法基本上是创建我的文本框,并根据鼠标指针进入或离开控件时发生的情况,更新文本框的内容以获得效果。问题是当我的表单第一次显示时,鼠标光标立即跳到第一个文本框中,这会删除告诉用户文本框用于什么的标题。如果我关闭了文本框上的AcceptTab,那么一切都按预期工作,但是用户无法使用Tab键进入文本框。有没有办法关闭文本框的自动选择?
w80xi6nr1#
你能把this.Focus()放在窗体本身上,还是放在某个标签控件上?
brqmpdu12#
有点晚了,但一个完美的解决方案是选择加载的形式。将此行添加到构造函数将给予预期的结果。
this.Select();
但是在使用OpenFileDialog这样的多线程控件时,如果你想取消聚焦/取消选择文本框,Select()不起作用,所以我使用选择了窗体中的一个按钮。
button1.Select();
zbdgwd5y3#
TabIndex属性控制选项卡的顺序,在加载时,焦点转到AcceptTab为true的第一个控件(按TabIndex排序)。您可以更改顺序,以便希望用户焦点开始的控件位于最低位置(并使选项卡按您所期望的方式在控件之间循环)。或者,如Jason所建议的,您可以在FormLoad事件中简单地对任何控件或窗体本身调用Focus()。
wwtsj6pe4#
我使用了Jason技术的一个变体。首先,我创建了一个tabindex为0的虚拟文本框。这样,当表单显示时,该文本框将被选中。接下来,我使虚拟文本框的宽度为零,这样它就没有可见的组件。但是,一旦表单加载完毕,我不希望用户能够跳到“nonexistant”文本框,因此,我添加了以下两个部分:
//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是窗体的名称。希望这能帮到什么人。账单3
epfja78i5#
您可以通过设置窗体的ActiveControl属性来重写默认焦点。因此,如果您希望焦点位于“确定”按钮上而不是文本框上,请将
ActiveControl = OkButton;
在FormLoad事件处理程序中。(其中OkButton是要获得焦点的控件的ID)
5条答案
按热度按时间w80xi6nr1#
你能把this.Focus()放在窗体本身上,还是放在某个标签控件上?
brqmpdu12#
有点晚了,但一个完美的解决方案是选择加载的形式。
将此行添加到构造函数将给予预期的结果。
但是在使用OpenFileDialog这样的多线程控件时,如果你想取消聚焦/取消选择文本框,Select()不起作用,所以我使用选择了窗体中的一个按钮。
zbdgwd5y3#
TabIndex属性控制选项卡的顺序,在加载时,焦点转到AcceptTab为true的第一个控件(按TabIndex排序)。您可以更改顺序,以便希望用户焦点开始的控件位于最低位置(并使选项卡按您所期望的方式在控件之间循环)。
或者,如Jason所建议的,您可以在FormLoad事件中简单地对任何控件或窗体本身调用Focus()。
wwtsj6pe4#
我使用了Jason技术的一个变体。首先,我创建了一个tabindex为0的虚拟文本框。这样,当表单显示时,该文本框将被选中。接下来,我使虚拟文本框的宽度为零,这样它就没有可见的组件。
但是,一旦表单加载完毕,我不希望用户能够跳到“nonexistant”文本框,因此,我添加了以下两个部分:
其中Main是窗体的名称。
希望这能帮到什么人。
账单3
epfja78i5#
您可以通过设置窗体的ActiveControl属性来重写默认焦点。因此,如果您希望焦点位于“确定”按钮上而不是文本框上,请将
在FormLoad事件处理程序中。(其中OkButton是要获得焦点的控件的ID)