当表单加载时如何把焦点放在TextBox上?
我有我的C#程序文本框
当程序启动的时候,我需要把焦点放在文本框上
我在Form_Load上试试这个:
MyTextBox.Focus();
但它不会工作
设置窗体的ActiveControl
属性,你应该没问题。
this.ActiveControl = yourtextboxname;
检查您的标签顺序,并确保文本框设置为零
你可以尝试:
MyTextBox.Select();
根据文件:
如果在ControlStyles中控件的Selectable样式位设置为true,则Select方法将激活控件,并将其包含在另一个控件中,并且所有父控件均可见并启用。
您可以通过检查MyTextBox.CanSelect属性来首先检查控件是否可以select。
如果您只想在第一次显示表单时设置焦点,请尝试处理Form.Shown事件并在此处执行此操作。 否则使用Control.VisibleChanged 。
如果没有呈现焦点,则无法将焦点设置为控件。 Form.Load()在呈现控件之前发生。
转到表单的事件,然后双击“显示”事件。 在窗体显示的事件处理程序中调用control.Focus()方法。
private void myForm_Shown(object sender, EventArgs e) { // Call textbox's focus method txtMyTextbox.Focus(); }
Textbox.Focus()
“尝试”设置文本框元素的焦点。 例如,在隐藏元素可见性的情况下, Focus()
将不起作用。 所以在调用Focus()
之前,确保你的元素是可见的。
使用表格显示事件和设置
MyTextBox.Focus();
你不能得到它的原因是因为Load
事件在表单被绘制或呈现之前被调用。
它就像告诉一个比萨饼店如何制作比萨饼,然后要求他们发一张比萨饼之前吃多less意大利辣香肠的照片。
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 this.yourtextbox.TabIndex = 0;
在jQuery中设置焦点
$(function() { $("#txtBox1").focus(); });
或在Javascript中,你可以做
window.onload = function() { document.getElementById("txtBox1").focus(); };