ฉันมีในกล่องข้อความโปรแกรม C #
ฉันต้องการมันเมื่อโปรแกรมเริ่มทำงานโฟกัสจะอยู่บนกล่องข้อความ
ฉันลองสิ่งนี้ใน Form_Load:
MyTextBox.Focus();
แต่มันจะไม่ทำงาน
ฉันมีในกล่องข้อความโปรแกรม C #
ฉันต้องการมันเมื่อโปรแกรมเริ่มทำงานโฟกัสจะอยู่บนกล่องข้อความ
ฉันลองสิ่งนี้ใน Form_Load:
MyTextBox.Focus();
แต่มันจะไม่ทำงาน
คำตอบ:
ตั้งค่าActiveControl
คุณสมบัติของแบบฟอร์มและคุณควรจะปรับ
this.ActiveControl = yourtextboxname;
MyTextBox.Focus();
ทำงาน - มันก็ใช้ได้ดีเมื่อโปรแกรมทำงาน
this.ActiveControl = textBox1;
ทุกคนเข้าใจความหมายของ "textBox1" "youttextboxname" ดูเหมือน... = "MyTextBox";
ตรวจสอบลำดับแท็บของคุณและตรวจสอบให้แน่ใจว่ากล่องข้อความถูกตั้งค่าเป็นศูนย์
คุณสามารถลอง:
ตามเอกสาร:
เมธอด Select จะเปิดใช้งานการควบคุมหากบิตสไตล์ที่เลือกได้ของตัวควบคุมถูกตั้งค่าเป็นจริงใน ControlStyles ซึ่งมีอยู่ในตัวควบคุมอื่นและตัวควบคุมหลักทั้งหมดสามารถมองเห็นและเปิดใช้งานได้
คุณสามารถตรวจสอบก่อนว่าตัวควบคุมสามารถเลือกได้หรือไม่โดยการตรวจสอบคุณสมบัติMyTextBox.CanSelect
คุณไม่สามารถตั้งโฟกัสให้กับตัวควบคุมได้หากยังไม่ได้แสดงผล Form.Load () เกิดขึ้นก่อนที่จะแสดงผลการควบคุม
ไปที่กิจกรรมของแบบฟอร์มและดับเบิลคลิกที่เหตุการณ์ "แสดง" ในตัวจัดการเหตุการณ์ที่แสดงของฟอร์มเรียกเมธอด control.Focus ()
private void myForm_Shown(object sender, EventArgs e)
{
// Call textbox's focus method
txtMyTextbox.Focus();
}
ถ้าคุณเพียงต้องการที่จะตั้งค่าการโฟกัสเป็นครั้งแรกในรูปแบบการแสดงพยายามจัดการForm.Shownเหตุการณ์และทำมันมี มิฉะนั้นใช้Control.VisibleChanged
Textbox.Focus()
"พยายาม" เพื่อกำหนดโฟกัสไปที่องค์ประกอบกล่องข้อความ ในกรณีที่องค์ประกอบการมองเห็นถูกซ่อนไว้Focus()
จะไม่ทำงาน 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();
}
}
}
ฉันแก้ไขปัญหาด้วยการเปลี่ยนคุณสมบัติ "TabIndex" ของ TextBox ฉันตั้งค่า 0 สำหรับกล่องข้อความที่ฉันต้องการโฟกัสบนฟอร์มเมื่อโปรแกรมเริ่มทำงาน
ใช้แบบฟอร์มแสดงเหตุการณ์และชุด
MyTextBox.Focus();
ตั้งค่าคุณสมบัติแท็บดัชนี = 0 และเขียนฟังก์ชั่นโหลดแบบฟอร์ม:
YourTextboxName.Focus();
มันจะทำงาน.
คุณสามารถใช้อย่างใดอย่างหนึ่งtextBox1.select();
หรือTabIndexในการตั้งค่ากล่องข้อความ TabIndex=0
มุ่งเน้นก่อน
ตั้งค่า Tabstop เป็น True และ TabIndex เป็นค่าต่ำสุดไปยังส่วนควบคุมที่คุณต้องการโฟกัส
เช่นหากคุณมี 2 TextBoxes: TextBox1 และ TextBox2 ให้ตั้ง Tabstop เป็น True สำหรับทั้ง TabIndex เป็น 0 และ 1 ตามลำดับ เมื่อโหลดแบบฟอร์มโฟกัสจะอยู่ที่ TextBox1 และเมื่อกดปุ่ม 'Tab' โฟกัสจะถูกย้ายไปที่ TextBox2
ในแบบฟอร์มของคุณไปที่คุณสมบัติและตรวจสอบให้แน่ใจว่าคุณสมบัติ "TopMost" ถูกตั้งค่าเป็นจริงซึ่งจะช่วยแก้ปัญหาของคุณ
มันทำงานสำหรับฉันตั้ง tabindex เป็น 0 this.yourtextbox.TabIndex = 0;
ในที่สุดฉันก็พบปัญหาที่ฉันใช้เฟรมเวิร์กเมโทรและโซลูชันทั้งหมดของคุณจะไม่ทำงานกับ metroTextBox และโซลูชันทั้งหมดของคุณจะทำงานกับ textBox ปกติในการโหลดแสดง show_change เหตุการณ์แม้แต่ดัชนีแท็บ = 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();
};
c#
winforms
ComboBox
ฉันพยายามนี้ แต่มันก็ไม่ได้ผลเช่นกัน!