none
Метод this.Focus() в событии Form1_MouseDown не работает. RRS feed

  • Вопрос

  • Метод this.Focus() в событии Form1_MouseDown не работает.

    Не поле фокусированный элемент textbox1, а в коде такое событие:

            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                this.Focus();
            }

    Нажимаю на форму, но фокус остаётся на элементе textbox1.

    Примечание: следующее событие срабатывает:

            private void button1_Click(object sender, EventArgs e)
            {
                this.Focus();
            }

    Но мне нужно чтоб срабатывало событие Form1_MouseDown.

    17 июня 2012 г. 17:57

Ответы

  • Примечание: следующее событие срабатывает:
            private void button1_Click(object sender, EventArgs e)
            {
                this.Focus();
            }

    Нет, не срабатывает. Фокус остаётся на кнопке, по которой кликнули.

    Вот здесь - Control.Focus - написано: The control can have the input focus while not displaying any visual cues of having the focus (только не читайте русский перевод - он мягко говоря ошибочный). В общем, форма не попадает в категорию контролов, могущих иметь фокус, если есть другие контролы, перехватывающие фокус.

    Как я понял, вам нужно убрать фокус с тексбокса. Тогда передавайте его другому контролу, способному принимать фокус (той же кнопке).

    • Помечено в качестве ответа Ziya Ceferov 17 июня 2012 г. 18:34
    17 июня 2012 г. 18:30