我在我的C#程序中有一个TextBox
。当程序启动时,我需要焦点放在这个TextBox
上。
我尝试在Form_Load事件中使用以下代码:
MyTextBox.Focus();
但它并不起作用。
当表单加载时,我该如何将焦点放在这里?
设置表单的ActiveControl
属性,然后你就可以了。
this.ActiveControl = yourtextboxname;
如果控件还没有被渲染,你无法将焦点设置到它。Form.Load() 的执行在控件被渲染之前。
前往窗体的事件并双击“Shown”事件。在窗体的shown事件处理程序中调用control.Focus()方法。
private void myForm_Shown(object sender, EventArgs e)
{
// Call textbox's focus method
txtMyTextbox.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.Focus()
尝试将焦点设置在文本框元素上。例如,如果元素可见性为隐藏,则 Focus()
不起作用。因此,在调用 Focus()
之前,请确保您的元素是可见的。
我通过更改文本框的“TabIndex”属性解决了我的问题。当程序启动时,我将要聚焦的文本框的TabIndex设置为0。
MyTextBox.Focus();
将 Tab Index 属性的值设置为 0,然后在表单加载函数中编写:
YourTextboxName.Focus();
它会正常工作。
ComboBox
。但它也不起作用! - GhasemMyTextBox.Focus();
没有起作用 - 在程序运行后它似乎表现良好。 - Levonthis.ActiveControl = textBox1;
。大家都了解"textBox1"的含义。"youttextboxname"听起来像是... = "MyTextBox";
。 - Bitterblue