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로 설정하면 텍스트 필드가 하나 있어도 초점이 맞지 않습니다.
두 개의 텍스트 상자 끌기
- textbox1 인 foucus를 원하지 않는 것을 표시하십시오.
- 두 번째 항목을 보이지 않게 만들고 해당 텍스트 필드의 속성으로 이동하여
tabindex 값을 textbox2의 0으로 설정
- 이제 textbox1의 tabindex를 1로 선택하면 textbox1에 초점을 맞추지 않습니다.
텍스트 상자의 내용 전체에 파란색 선택이없는 광학 효과 만 원하는 경우 텍스트를 선택하지 마십시오.
textBox_Log.SelectionStart = 0;
textBox_Log.SelectionLength = 0;
textBox_Log.Select();
그 후로 콘텐츠를 추가하면 .Text += "..."파란색 선택이 표시되지 않습니다.
설정 시도하십시오 TabStop에 False초점이되지 뷰 컨트롤.
예 :
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
'IT' 카테고리의 다른 글
| Server.MapPath를 사용할 수 없습니다. (0) | 2020.08.11 |
|---|---|
| 목록에서 n 번째 항목을 모두 가져 오는 방법 (0) | 2020.08.11 |
| iPhone / iPad 용 자바 스크롤 스크롤 이벤트? (0) | 2020.08.11 |
| 자바에서 노드를 공유 배열로 변환 (0) | 2020.08.11 |
| 로컬 네트워크 사용자가 내 WAMP 사이트에 액세스 할 수있는 방법은 무엇입니까? (0) | 2020.08.11 |