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

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

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

Form_Load에서 시도해보십시오.

MyTextBox.Focus();

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



답변

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

this.ActiveControl = yourtextboxname;


답변

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


답변

시도해 볼 수 있습니다 :

MyTextBox.Select ();

설명서에 따르면 :

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

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