[c#] WinForms의 TextBox에서 포커스를 제거하는 방법은 무엇입니까?

여러 TextBox에서 포커스를 제거해야합니다. 나는 사용해 보았다 :

textBox1.Focused = false;

그것의 ReadOnly속성 값입니다 true.

그런 다음 모든 TextBox에서 제거하기 위해 양식에 포커스를 설정하려고 시도했지만 작동하지 않습니다.

this.Focus();

false텍스트 상자가 선택되면 함수가 반환 됩니다.

그렇다면 TextBox에서 포커스를 어떻게 제거합니까?



답변

포커스를 이동하려면 다른 포커스 가능한 컨트롤이 필요합니다.

포커스를 레이블로 설정할 수 있습니다. 다음에 [Tab] 키를 사용할 위치를 고려할 수 있습니다.

또한 양식으로 설정할 수 없습니다. Form 및 Panel과 같은 컨테이너 컨트롤은 Focus on을 첫 번째 자식 컨트롤로 전달합니다. 이동하려는 TextBox가 될 수 있습니다.


답변

레이블에 집중하는 것이 저에게 효과가 없었 label1.Focus()습니다. 양식을로드 할 때 텍스트 상자에 여전히 포커스가 있지만 Velociraptors
응답을 시도 하면 Form의 Active 컨트롤을 다음과 같이 레이블로 설정하여 저에게 효과적 이었습니다.

private void Form1_Load(object sender, EventArgs e)
{
    this.ActiveControl = label1;
}


답변

다음 코드를 추가 할 수 있습니다.

this.ActiveControl = null;  //this = form


답변

텍스트 상자를 비활성화하고 활성화하십시오.


답변

양식 activecontrol속성을 다음 null과 같이 설정할 수도 있습니다.

ActiveControl = null;


답변

Focus입력 포커스를 설정하므로 양식이 입력을 받아들이지 않으므로 양식으로 설정하면 작동하지 않습니다. 양식의 ActiveControl속성을 다른 컨트롤로 설정해보십시오 . Select특정 컨트롤 SelectNextControl을 선택 하거나 탭 순서에서 다음 컨트롤 을 선택하는 데 사용할 수도 있습니다 .


답변

이거 한번 해봐:

먼저 탭 순서를 설정합니다.

그런 다음 양식로드 이벤트에서 프로그래밍 방식으로 응용 프로그램에 탭 키 누름을 보낼 수 있습니다. 따라서 해당 응용 프로그램은 탭 순서에서 첫 번째 제어에 초점을 맞 춥니 다.

양식로드에서도이 줄을 작성하십시오.

SendKeys.Send("{TAB}");

이것은 나를 위해 일했습니다.