[英]how to put focus on TextBox when the form load?
我在我的 C# 程序文本框中
我需要在程序启动时将焦点放在文本框上
我在 Form_Load 上试试这个:
MyTextBox.Focus();
但它不会工作
设置窗体的ActiveControl
属性,你应该没问题。
this.ActiveControl = yourtextboxname;
检查您的标签顺序并确保文本框设置为零
如果控件尚未呈现,则无法将焦点设置为控件。 Form.Load() 在呈现控件之前发生。
Go 到表单的事件并双击“显示”事件。 在表单显示的事件处理程序中调用 control.Focus() 方法。
private void myForm_Shown(object sender, EventArgs e)
{
// Call textbox's focus method
txtMyTextbox.Focus();
}
你可以试试:
根据文档:
Select 方法激活控件,如果控件的 Selectable 样式位在 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()
之前您的元素是可见的。
使用表单显示的事件并设置
MyTextBox.Focus();
我通过更改 TextBox 的“TabIndex”属性解决了我的问题。 我为 TextBox 设置了 0,我想在程序启动时将其集中在 Form 上。
设置 Tab Index 属性的值 = 0,然后在表单加载 function 中写入:
YourTextboxName.Focus();
它会起作用的。
您可以使用textBox1.select();
或文本框设置中的TabIndex 。 TabIndex=0
优先关注。
将 Tabstop 设置为 True 并将 TabIndex 设置为您需要关注的控件的最小值。
例如,如果您有 2 个文本框:TextBox1 和 TextBox2,请将两者的 Tabstop 设置为 True,将 TabIndex 分别设置为 0 和 1。 加载表单时,焦点将位于 TextBox1 上,按下“Tab”键时,焦点将移至 TextBox2。
它对我有用,将 tabindex 设置为 0 this.yourtextbox.TabIndex = 0;
Go 到表单的事件并双击“显示”事件。 在表单显示的事件处理程序中调用 control.Focus() 方法。
private void myForm_Shown(object sender, EventArgs e)
{
// Call textbox's focus method
txtMyTextbox.Focus();
}
我喜欢它...谢谢!
在您的表单上,将 go 设置为属性,并确保“TopMost”属性设置为 true,这将解决您的问题。
最后我发现了我使用metro框架的问题,你所有的解决方案都不适用于metroTextBox,你所有的解决方案都可以在加载、显示、visibility_change、events中使用普通的textBox,即使选项卡索引= 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();
}
在 jquery 设置焦点
$(function() {
$("#txtBox1").focus();
});
或者在 Javascript 你可以做
window.onload = function() {
document.getElementById("txtBox1").focus();
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.