양식이로드 될 때 TextBox에 초점을 맞추는 방법은 무엇입니까?


156

내 C # 프로그램 textBox에 있습니다.

프로그램이 시작되면 포커스가 textBox에 있어야합니다.

Form_Load에서 시도해보십시오.

MyTextBox.Focus();

그러나 그것은 작동하지 않습니다

답변:


341

ActiveControl양식 의 속성을 설정하면 괜찮을 것입니다.

this.ActiveControl = yourtextboxname;

1
나는 이것을 시도했다 ComboBox. 그러나 그것은 작동하지 않습니다!
Alex Jolig

1
고마워 이것은 다른 모든 것이되지 않은 곳에서 나를 위해 일했습니다. 왜 Tab Index = 0이 작동하지 않는지 확실하지 않지만 양식 / 표시 대화 상자를로드하는 동안 이상한 작업 순서가 진행 중일 수 있습니다.
David Carrigan

1
이것을 시도하십시오 >>> this.ActiveControl = yourtextboxname.Control;
Polamin Singhasuwich

3
이것은 훌륭하게 작동하지만 왜 MyTextBox.Focus();작동 하지 않았습니까? 프로그램이 실행되면 정상적으로 작동하는 것 같습니다.
Levon

2
this.ActiveControl = textBox1;모두 쓰기 "textBox1"의 의미를 이해합니다. "youttextboxname"같은 소리... = "MyTextBox";
Bitterblue

25

탭 순서를 확인하고 텍스트 상자가 0으로 설정되어 있는지 확인하십시오.


일. 또는 tabindex를 사용하여 양식에서 첫 번째 커서 "포커스 가능"요소가됩니다.
apincik

15

시도해 볼 수 있습니다 :

MyTextBox.Select ();

설명서에 따르면 :

컨트롤의 선택 가능한 스타일 비트가 ControlStyles에서 true로 설정되고 다른 컨트롤에 포함되어 있고 모든 부모 컨트롤이 표시되고 활성화 된 경우 Select 메서드는 컨트롤을 활성화합니다.

MyTextBox.CanSelect 속성 을 검사하여 컨트롤을 선택할 수 있는지 먼저 확인할 수 있습니다 .


15

컨트롤이 렌더링되지 않은 경우 컨트롤에 포커스를 설정할 수 없습니다. 컨트롤이 렌더링되기 전에 Form.Load ()가 발생합니다.

양식의 이벤트로 이동하여 "표시된"이벤트를 두 번 클릭하십시오. 양식의 표시된 이벤트 핸들러에서 control.Focus () 메소드를 호출하십시오.

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


6

Textbox.Focus()텍스트 상자 요소에 초점을 설정하는 "시도" 예를 들어 요소 가시성이 숨겨져 있으면 Focus()작동하지 않습니다. 호출하기 전에 요소가 표시되는지 확인하십시오 Focus().


5

당신이 그것을 작동시킬 수없는 이유 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();
        }
    }
}

4

TextBox의 "TabIndex"속성을 변경하는 문제를 해결했습니다. 프로그램을 시작할 때 Form에 초점을 맞추려는 TextBox에 대해 0을 설정했습니다.



3

탭 인덱스 속성 값을 0으로 설정 한 다음로드 함수 쓰기 양식으로 설정하십시오.

YourTextboxName.Focus();

작동합니다.


2

텍스트 상자 설정에서 textBox1.select();또는 TabIndex 를 사용할 수 있습니다 . TabIndex=0먼저 집중했다.


textBox1.select ()를 호출하면; 폼로드 이벤트 핸들러에서 textBox1에 포커스를 설정합니다.
Tushar R.

1

Tabstop을 True로 설정하고 TabIndex를 포커스가 필요한 컨트롤의 최소값으로 설정하십시오.

예를 들어 TextBox1과 TextBox2가 2 개인 경우 Tabstop과 TabIndex를 각각 Tabstop으로 0과 1로 설정합니다. 폼이로드되면 포커스가 TextBox1에 있고 'Tab'키를 누르면 포커스가 TextBox2로 이동합니다.


1

양식에서 속성으로 이동하여 "TopMost"속성이 true로 설정되어 있는지 확인하면 문제가 해결됩니다.



0

마지막으로 메트로 프레임 워크를 사용하는 문제를 발견했으며 모든 솔루션이 metroTextBox와 함께 작동하지 않으며 모든 솔루션이 load, show, visible_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();
    }

-5

jquery에서 포커스 설정

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

또는 자바 스크립트로 할 수 있습니다

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

4
이것은 웹 사이트 질문에 대한 좋은 대답 일 수 있지만 태그가 c#winforms입니다.
Ben Voigt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.