IT

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

lottoking 2020. 8. 11. 07:40
반응형

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


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

textBox1.Focused = false;

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

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

this.Focus();

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

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


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

포커스를 접근 할 수 있습니다. [Tab] 키를 다음에 사용할 위치를 고려할 수 있습니다.

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


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

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

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


이 게시물은 나를 이렇게 유도합니다.

ActiveControl = null;

모든 키보드 입력을 통해 작동하지 않습니다.


다른 요소에 증가를 맞출 필요가없는 것입니다. Windows Phone 7 응용 프로그램에서 Focus 메서드를 사용하여 텍스트 상자의 Focus 설정을 해제했습니다.

다음 명령을 내리면 포커스가 아무것도 설정하지 않습니다.

void SearchBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        Focus();
    }
}

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx

그것은 나를 위해 일했지만 당신에게 효과가 없었는지 모르겠습니다 : /


간단한 포커스는 포커스를 없애고 자신만의 클래스를 만드는 것입니다.

public class ViewOnlyTextBox : System.Windows.Forms.TextBox {
    // constants for the message sending
    const int WM_SETFOCUS = 0x0007;
    const int WM_KILLFOCUS = 0x0008;

    protected override void WndProc(ref Message m) {
        if(m.Msg == WM_SETFOCUS) m.Msg = WM_KILLFOCUS;

        base.WndProc (ref m);
    }
}

좋은 대안을 찾았습니다! 다른 것에 초점을 맞추지 않고 가장 잘 작동합니다.

시도해보십시오.

private void richTextBox_KeyDown(object sender, KeyEventArgs e)
{    
    e.SuppressKeyPress = true;
}

나는 이것을 내 사용자 정의 컨트롤에서 만들었고 이것을 onFocus ()했습니다.

this.Parent.Focus();

따라서 texbox에 초점을 맞춘 경우-즉시 텍스트 상자 부모 (양식 또는 패널 ...)에 초점을 맞 춥니 다.이 옵션은 사용자 지정 컨트롤에서 만들려면 좋은 옵션입니다.


    //using System;
    //using System.Collections.Generic;
    //using System.Linq;

    private void Form1_Load(object sender, EventArgs e)
    {
        FocusOnOtherControl(Controls.Cast<Control>(), button1);
    }

    private void FocusOnOtherControl<T>(IEnumerable<T> controls, Control focusOnMe) where T : Control
    {
        foreach (var control in controls)
        {
            if (control.GetType().Equals(typeof(TextBox)))
            {
                control.TabStop = false;
                control.LostFocus += new EventHandler((object sender, EventArgs e) =>
                {                     
                    focusOnMe.Focus();
                });
            }
        }
    }

이 문제를 해결하는 방법은 모든 winform 컨트롤을 배치하는 것입니다. 모든 레이블과 선택하지 않는 winform 컨트롤을 탭 순서 0으로 만든 다음 첫 번째 컨트롤을 탭 순서 2로 만든 다음 각 선택 가능한 컨트롤의 순서를 1 씩 증가 시키므로 3, 4, 5 등 ...

이렇게하면 내 Winforms가 시작될 때 첫 번째 TextBox에 포커스가 없습니다!


두 가지 방법으로 할 수 있습니다

  • 원하는 텍스트 상자의 "TabStop"속성을 false로 설정하면 텍스트 필드가 하나 있어도 초점이 맞지 않습니다.
  • 두 개의 텍스트 상자 끌기

    1. textbox1 인 foucus를 원하지 않는 것을 표시하십시오.
    2. 두 번째 항목을 보이지 않게 만들고 해당 텍스트 필드의 속성으로 이동하여

tabindex 값을 textbox2의 0으로 설정

  1. 이제 textbox1의 tabindex를 1로 선택하면 textbox1에 초점을 맞추지 않습니다.

텍스트 상자의 내용 전체에 파란색 선택이없는 광학 효과 만 원하는 경우 텍스트를 선택하지 마십시오.

textBox_Log.SelectionStart = 0;
textBox_Log.SelectionLength = 0;
textBox_Log.Select();

그 후로 콘텐츠를 추가하면 .Text += "..."파란색 선택이 표시되지 않습니다.


설정 시도하십시오 TabStopFalse초점이되지 뷰 컨트롤.

예 :

txtEmpID.TabStop = false;

Form 또는 UserControl의 생성자에서 TextBox 쓰기

SetStyle(ControlStyles.Selectable, false);

InitializeComponent (); 이후 출처 : https://stackoverflow.com/a/4811938/5750078

예:

public partial class Main : UserControl
{

    public Main()
    {
        InitializeComponent();
        SetStyle(ControlStyles.Selectable, false);
    }

참고 URL : https://stackoverflow.com/questions/1140250/how-to-remove-the-focus-from-a-textbox-in-winforms

반응형