문제

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

문제가 해결 될까요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top