我的 C# 程序中有一个
TextBox
。当程序开始时,我需要集中注意力在这个TextBox
上。
我在 Form_Load 上尝试过这个:
MyTextBox.Focus();
但是不起作用。
表单加载时如何将焦点放在此上?
设置表单的
ActiveControl
属性就可以了。
this.ActiveControl = yourtextboxname;
如果控件尚未呈现,则无法将焦点设置到该控件。 Form.Load() 在控件渲染之前发生。
转到表单的事件并双击“已显示”事件。在表单的显示事件处理程序中调用 control.Focus() 方法。
private void myForm_Shown(object sender, EventArgs e)
{
// Call textbox's focus method
txtMyTextbox.Focus();
}
检查您的 Tab 键顺序并确保文本框设置为零
你可以尝试:
根据文档:
如果控件是可选的,则 Select 方法将激活该控件 ControlStyles 中的样式位设置为 true,它包含在另一个 控件,及其所有父控件都是可见且启用的。
您可以首先通过检查 MyTextBox.CanSelect 属性来检查控件是否可选择。
如果您只想在第一次显示表单时设置焦点,请尝试处理 Form.Shown 事件并在那里进行操作。否则使用 Control.VisibleChanged.
无法让它工作的原因是因为在绘制或渲染表单之前调用
Load
事件。
这就像告诉披萨店如何制作披萨,然后要求他们在制作披萨之前向您发送一张照片,显示披萨上有多少意大利辣香肠。
using System;
using System.Windows.Forms;
namespace Testing
{
public partial class TestForm : Form
{
public TestForm()
{
InitializeComponent();
Load += TestForm_Load;
VisibleChanged += TestForm_VisibleChanged;
Shown += TestForm_Shown;
Show();
}
private void TestForm_Load(object sender, EventArgs e)
{
MessageBox.Show("This event is called before the form is rendered.");
}
private void TestForm_VisibleChanged(object sender, EventArgs e)
{
MessageBox.Show("This event is called before the form is rendered.");
}
private void TestForm_Shown(object sender, EventArgs e)
{
MessageBox.Show("This event is called after the form is rendered.");
txtFirstName.Focus();
}
}
}
Textbox.Focus()
“尝试”将焦点设置在文本框元素上。例如,如果元素可见性被隐藏,Focus()
将不起作用。因此,在调用 Focus()
之前,请确保您的元素可见。
我通过更改 TextBox 的“TabIndex”属性解决了问题。我为 TextBox 设置了 0,我想在程序启动时将其聚焦在 Form 上。
使用表单显示的事件并设置
MyTextBox.Focus();
设置 Tab Index 属性的值 = 0,然后在表单加载函数中写入:
YourTextboxName.Focus();
它会起作用的。
最后我发现了我使用metro框架的问题,你所有的解决方案都不适用于metroTextBox,而你所有的解决方案都将适用于普通的textBox 在 load 、 show 、visibility_change 、events 中,即使选项卡索引 = 0 也是有效的。
// private void Form1_VisibleChanged(object sender, EventArgs e)
// private void Form1__Shown(object sender, EventArgs e)
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Select();
this.ActiveControl=textBox1;
textBox1.Focus();
}
您可以在文本框设置中使用
textBox1.select();
或TabIndex。 TabIndex=0
首先集中注意力。
将 Tabstop 设置为 True,并将 TabIndex 设置为最小到您需要焦点的控件。
例如如果您有 2 个 TextBox:TextBox1 和 TextBox2,请将两者的 Tabstop 设置为 True,并将 TabIndex 分别设置为 0 和 1。当表单加载时,焦点将位于 TextBox1 上,按“Tab”键,焦点将移至 TextBox2。
这对我有用 将选项卡索引设置为 0 this.yourtextbox.TabIndex = 0;
在您的表单上,转到属性并确保“TopMost”属性设置为 true, 这将解决你的问题。
这是加载 C# 表单时将文本框置于焦点的一种简单方法。它与上面的类似,但编码较少。我不记得我第一次找到解决方案的地方,但我已经使用它几年了,感谢他们。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.ActiveControl = txt_PrtrIP;
txt_PrtrIP.Focus();
}
在jquery中设置焦点
$(function() {
$("#txtBox1").focus();
});
或者在 Javascript 中你可以这样做
window.onload = function() {
document.getElementById("txtBox1").focus();
};