当表单加载时,如何将焦点放在 TextBox 上?

在我的 C # 程序中有一个 TextBox。当程序开始时,我需要把注意力集中在这个 TextBox上。

我在 Form _ Load 上试过这个:

MyTextBox.Focus();

但是没用。

当表单加载时,我如何将焦点放在这上面?

334136 次浏览

检查您的制表符顺序,并确保文本框设置为零

你可以试试:

选择() ;

根据文件记载:

如果控件是 Selectable,则 Select 方法激活该控件 样式位在 ControlStyles 中设置为 true,则包含在另一个 控件,其所有父控件都是可见的并且已启用。

通过检查 可以选择属性,可以首先检查控件是否可以选择。

设置表单的 ActiveControl属性,应该就可以了。

this.ActiveControl = yourtextboxname;

如果只想在第一次显示窗体时设置焦点,请尝试处理 表格,显示事件并在那里进行。否则使用 控件。可见更改

Textbox.Focus()“尝试”设置文本框元素的焦点。例如,在元素可见性被隐藏的情况下,Focus()将不工作。因此,在调用 Focus()之前,请确保您的元素是可见的。

使用表单显示事件和设置

MyTextBox.Focus();

无法使其工作的原因是在绘制或呈现窗体之前调用了 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 的“ TabIndex”属性解决了这个问题。我将 TextBox 设置为0,以便在程序启动时将其集中在 Form 上。

这招对我很管用 将 tabindex 设置为0 你的文本框 TabIndex = 0;

在 jquery 中设置焦点

$(function() {
$("#txtBox1").focus();
});

或者你可以用 Javascript 来做

window.onload = function() {
document.getElementById("txtBox1").focus();
};

如果控件尚未呈现,则无法将焦点设置到该控件。表格。Load ()在呈现控件之前发生。

转到表单的事件,双击“显示”事件。在窗体显示的事件处理程序中调用控件。Focus ()方法。

    private void myForm_Shown(object sender, EventArgs e)
{
// Call textbox's focus method
txtMyTextbox.Focus();
}

您可以在文本框设置中使用 textBox1.select();TabIndex

将 Tabstop 设置为 True,将 TabIndex 设置为您需要关注的控件的最小值。

例如:。如果有2个 TextBox: TextBox1和 TextBox2,请将这两个 TextBox1和 TextBox2的 Tabstop 设置为 True,将 TabIndex 分别设置为0和1。当表单加载时,焦点将集中在 TextBox1上并按下“ Tab”键,焦点将移动到 TextBox2。

设置 Tab Index 属性的值 = 0,然后在表单加载函数中写:

YourTextboxName.Focus();

会成功的。

在窗体上,转到属性,并确保“ TopMost”属性设置为 true, 能解决你的问题。

最后,我发现问题是我使用的都市框架和你的所有解决方案将无法与都市文本框,你的所有解决方案将工作与正常的文本框 在装载、显示、可见性 _ 变化、事件,甚至选项卡索引 = 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();
}