Làm cách nào để tập trung vào TextBox khi tải biểu mẫu?


156

Tôi có trong textBox chương trình C # của mình

Tôi cần điều đó khi chương trình bắt đầu, tiêu điểm sẽ nằm trên textBox

Tôi thử cái này trên Form_Load:

MyTextBox.Focus();

nhưng nó không hoạt động

Câu trả lời:


341

Đặt thuộc ActiveControltính của biểu mẫu và bạn sẽ ổn.

this.ActiveControl = yourtextboxname;

1
Tôi đã thử điều này cho ComboBox. Nhưng nó cũng không hoạt động!
Alex Jolig

1
Cảm ơn điều này đã làm việc cho tôi, nơi mọi thứ khác đã không. Không chắc chắn tại sao Tab Index = 0 sẽ không hoạt động nhưng có thể có thứ tự hoạt động kỳ lạ đang diễn ra trong khi tải hộp thoại biểu mẫu / hiển thị.
David Carrigan

1
HÃY THỬ NÀY >>> this.ActiveControl = yourtextboxname.Control;
Polamin Singhasuwich

3
Điều này hoạt động rất tốt, nhưng tại sao nó không MyTextBox.Focus();hoạt động - có vẻ như hoạt động tốt khi chương trình đang chạy.
Levon

2
Viết this.ActiveControl = textBox1;Mọi người đều hiểu ý nghĩa của "textBox1". "youttextboxname" nghe có vẻ như... = "MyTextBox";
Bitterblue

25

kiểm tra thứ tự tab của bạn và đảm bảo hộp văn bản được đặt thành không


Đang làm việc. Hoặc chỉ cần tabindex là phần tử "có thể tập trung" con trỏ đầu tiên trong biểu mẫu.
apincik

15

Bạn có thể thử:

MyTextBox.Select ();

Theo tài liệu:

Phương thức Chọn kích hoạt điều khiển nếu bit kiểu có thể chọn của điều khiển được đặt thành true trong ControlStyles, nó được chứa trong một điều khiển khác và tất cả các điều khiển chính của nó đều hiển thị và được bật.

Trước tiên, bạn có thể kiểm tra xem có thể chọn điều khiển hay không bằng cách kiểm tra thuộc tính MyTextBox.CanSelect .


15

Bạn không thể đặt tiêu điểm thành điều khiển nếu nó chưa được hiển thị. Form.Load () xảy ra trước khi các điều khiển được hiển thị.

Chuyển đến sự kiện của biểu mẫu và nhấp đúp vào sự kiện "Hiển thị". Trong trình xử lý sự kiện được hiển thị của biểu mẫu, gọi phương thức control.F Focus ().

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


6

Textbox.Focus()"Thử" để đặt tiêu điểm vào thành phần hộp văn bản. Ví dụ, trong trường hợp khả năng hiển thị phần tử bị ẩn, Focus()sẽ không hoạt động. Vì vậy, hãy chắc chắn rằng phần tử của bạn được hiển thị trước khi gọi Focus().


5

Lý do bạn không thể làm cho nó hoạt động là vì Loadsự kiện được gọi trước khi biểu mẫu được vẽ hoặc kết xuất.

Nó giống như nói với một nơi pizza làm bánh pizza của bạn, và sau đó yêu cầu họ gửi cho bạn một hình ảnh về bao nhiêu pepperoni trên bánh pizza của bạn trước khi họ làm nó.

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();
        }
    }
}

4

Tôi đã giải quyết vấn đề của mình bằng cách thay đổi thuộc tính "Tab Index" của TextBox. Tôi đặt 0 cho TextBox mà tôi muốn tập trung vào Biểu mẫu khi chương trình bắt đầu.


3

sử dụng mẫu hiển thị sự kiện và thiết lập

MyTextBox.Focus();

3

Đặt giá trị của thuộc tính Tab Index = 0 và sau đó ở dạng tải hàm viết:

YourTextboxName.Focus();

Nó sẽ làm việc.


2

Bạn có thể sử dụng textBox1.select();hoặc Tab Index trong cài đặt hộp văn bản. TabIndex=0tập trung đầu tiên.


Nếu chúng ta gọi textBox1.select (); trong trình xử lý sự kiện tải biểu mẫu, nó đặt tiêu điểm trong textBox1.
Tushar R.

1

Đặt Tabstop thành True và Tab Index ở mức tối thiểu thành điều khiển mà bạn cần tập trung.

ví dụ: Nếu bạn có 2 TextBoxes: TextBox1 và TextBox2, hãy đặt Tabstop thành True cho cả hai và Tab Index thành 0 và 1 tương ứng. Khi biểu mẫu tải, tiêu điểm sẽ nằm trên TextBox1 và khi nhấn phím 'Tab', tiêu điểm sẽ chuyển sang TextBox2.


1

trên biểu mẫu của bạn, đi đến các thuộc tính và đảm bảo rằng thuộc tính "TopMost" được đặt thành đúng, điều đó sẽ giải quyết vấn đề của bạn.


0

nó hoạt động với tôi khi đặt tabindex thành 0 this.yourtextbox.TabIndex = 0;


0

Cuối cùng tôi đã tìm thấy sự cố tôi đang sử dụng khung metro và tất cả các giải pháp của bạn sẽ không hoạt động với metroTextBox và tất cả các giải pháp của bạn sẽ hoạt động với textBox bình thường trong tải, hiển thị, tầm nhìn_change, sự kiện, thậm chí chỉ số tab = 0 là hợp lệ.

   // 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();
    }

-5

Trong tập trung jquery

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

hoặc trong Javascript bạn có thể làm

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

4
Đây có thể là một câu trả lời tốt cho một câu hỏi trang web, nhưng câu hỏi này được gắn thẻ c#winforms.
Ben Voigt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.