키보드 단축키를 사용할 때 제어 분실 초점 이벤트
문제
.NET Winforms 및 Windows 프레젠테이션 재단의 경우 사용자가 방금 텍스트를 입력 한 텍스트 상자가 있고 버튼이 버튼을 클릭하면 버튼을 클릭하기 전에 "LostFocus"이벤트가 발생하는 경우 버튼이있는 경우 버튼이있는 경우 버튼이 있습니다. 그러나 사용자가 버튼에 키보드 바로 가기를 사용하는 경우 (예 : 버튼의 텍스트는 "& 버튼"또는 "_button"이고 사용자는 Alt+B를 수행하는 경우, 버튼 클릭 이벤트 후 "LostFocus"이벤트가 발사되면 유용하지 않습니다.
합리적인 해결 방법을 알고 있습니까? ButtonClick 전에 LostFocus에서 일어나고 싶은 다양한 일이 있습니다.
해결책
버튼 로직을 발사하기 전에 손실 된 초점 논리가 발생했는지 여부를 추적 할 수 있습니다. 어쨌든 핸들러에 직접 코드가 있어서는 안됩니다. 당신은 다음과 같은 일을 할 수 있습니다 :
public partial class Form1 : Form
{
private Boolean _didLostFocusLogic;
public Form1()
{
InitializeComponent();
}
private void textBox1_Leave(object sender, EventArgs e)
{
LostFocusLogic();
}
private void button1_Click(object sender, EventArgs e)
{
ButtonClickLogic();
}
private void LostFocusLogic()
{
/* Do stuff */
_didLostFocusLogic = true;
}
private void ButtonClickLogic()
{
if (!_didLostFocusLogic)
LostFocusLogic();
_didLostFocusLogic = false; // Reset for next time.
/* Do stuff */
}
}
다른 팁
버튼 핸들러에서 먼저이 작업을 수행하면 어떻게됩니까? (또는 아마도 버튼을 서브 클래스하고 OnClick을 재정의 하여이 논리를 "Worldwide"에 적용하십시오).
Button b = (Button) sender;
b.Focus();
문제가 해결 될까요?
제휴하지 않습니다 StackOverflow