Frage

Für beide .NET WinForms und Windows Presentation Foundation, wenn ich ein Textfeld, das der Benutzer Text nur eingegeben hat sich in und auf eine Schaltfläche, wenn der Benutzer klickt auf die Schaltfläche die „Lost“ Ereignis ausgelöst wird, bevor die Schaltfläche klicken Ereignis ausgelöst wird . Allerdings, wenn der Benutzer eine Tastenkombination für die Schaltfläche verwendet (zB Button-Text ist „& Knopf“ oder „_Button“ und Benutzer führt Alt + B), dann die „Lost“ Ereignis ausgelöst wird, nachdem die Schaltfläche Click-Ereignis, die weniger nützlich ist.

Sie wissen angemessener Abhilfen? Wir haben verschiedene Dinge, die wir in Lost-Focus vor Button erfolgen soll.

War es hilfreich?

Lösung

Sie könnten versuchen, Tracking, ob der Fokus verloren Logik vor dem Brennen auf die Schaltfläche Logik aufgetreten ist. Sie sollten nicht wirklich Code direkt im Handler trotzdem. Man könnte so etwas tun:

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 */
        }
    }

Andere Tipps

Was passiert, wenn Sie diese zunächst in der Schaltfläche Handler tun? (Oder vielleicht auf die Schaltfläche Unterklasse und überschreiben OnClick diese Logik anwenden „weltweit“).

Button b = (Button) sender;
b.Focus();

Wäre die rund um die Frage bekommen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top