none
Как изменить значение Value у numericUpDown1 в событии Form1_KeyDown? RRS feed

  • Вопрос

  • Как изменить значение Value у numericUpDown1 в событии Form1_KeyDown?

    Следующий код не работает:

    private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyData == Keys.C & numericUpDown1.Focused)
                    numericUpDown1.Value = 2;
            }
    5 августа 2012 г. 7:15

Ответы

  • Как изменить значение Value у numericUpDown1 в событии Form1_KeyDown?

    Следующий код не работает:

    private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyData == Keys.C & numericUpDown1.Focused)
                    numericUpDown1.Value = 2;
            }
    Если фокус на NumericUpDown, то события нажатия кнопок у формы не будут срабатывать. Нужно проверять событие для NumericUpDown. В отличии от WPF в WinForms нет пузырькового или туннельного распространения событий.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Изменено LXGDARKEditor 5 августа 2012 г. 18:34
    • Помечено в качестве ответа Ziya Ceferov 5 августа 2012 г. 21:34
    5 августа 2012 г. 18:32
    Отвечающий
  • Если фокус на NumericUpDown, то события нажатия кнопок у формы не будут срабатывать. Нужно проверять событие для NumericUpDown. В отличии от WPF в WinForms нет пузырькового или туннельного распространения событий.

    На самом деле у формы есть грязный хак. Свойство KeyPreview - установив его в значение true, вы заставите форму принимать все нажатия клавиш до того, как они попадут в компонент на котором фокус ввода. Установите KeyPreview через дизайнер у формы в true и все должно заработать.
    • Помечено в качестве ответа Abolmasov Dmitry 24 августа 2012 г. 11:57
    5 августа 2012 г. 19:28
    Отвечающий

Все ответы

  • а почему & а не &&?
    тут & надо?

    5 августа 2012 г. 11:15
  • Учту.
    5 августа 2012 г. 11:23
  • а с && работает?
    5 августа 2012 г. 16:28
  • Следующий код тоже не работает:

            private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyData == Keys.C)
                    numericUpDown1.Value = 2;
            }
    5 августа 2012 г. 17:15
  • а просто numericUpDown1.Value = 2;
    работает?
    5 августа 2012 г. 18:09
  • Как изменить значение Value у numericUpDown1 в событии Form1_KeyDown?

    Следующий код не работает:

    private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyData == Keys.C & numericUpDown1.Focused)
                    numericUpDown1.Value = 2;
            }
    Если фокус на NumericUpDown, то события нажатия кнопок у формы не будут срабатывать. Нужно проверять событие для NumericUpDown. В отличии от WPF в WinForms нет пузырькового или туннельного распространения событий.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Изменено LXGDARKEditor 5 августа 2012 г. 18:34
    • Помечено в качестве ответа Ziya Ceferov 5 августа 2012 г. 21:34
    5 августа 2012 г. 18:32
    Отвечающий
  • Если фокус на NumericUpDown, то события нажатия кнопок у формы не будут срабатывать. Нужно проверять событие для NumericUpDown. В отличии от WPF в WinForms нет пузырькового или туннельного распространения событий.

    На самом деле у формы есть грязный хак. Свойство KeyPreview - установив его в значение true, вы заставите форму принимать все нажатия клавиш до того, как они попадут в компонент на котором фокус ввода. Установите KeyPreview через дизайнер у формы в true и все должно заработать.
    • Помечено в качестве ответа Abolmasov Dmitry 24 августа 2012 г. 11:57
    5 августа 2012 г. 19:28
    Отвечающий
  • Установите KeyPreview через дизайнер у формы в true и все должно заработать.

    Я устанавливаю через Properties/Misc/KeyPreview - правильно?
    5 августа 2012 г. 21:41
  • Видимо паравильно. Теперь форма перехватывает нажатия клавиш?

    6 августа 2012 г. 3:39
    Отвечающий
  • кто-то нажал на "Сообщить о нарушении"...
    Я же просто спросил, может в конкретной ситуации именно это не работает,
    так как проверка клавиши мне показалась нормальной.
    В общем, меня оскорбило то, что кто-то посчитал оскорбительным мой вроде бы закономерный вопрос.
    Печально, но забуду, ерунда же это всё.
    6 августа 2012 г. 4:40
  • кто-то нажал на "Сообщить о нарушении"...
    Я же просто спросил, может в конкретной ситуации именно это не работает,
    так как проверка клавиши мне показалась нормальной.
    В общем, меня оскорбило то, что кто-то посчитал оскорбительным мой вроде бы закономерный вопрос.
    Печально, но забуду, ерунда же это всё.
    Это могли сделать случайно или по злому умыслу, не обязательно полезные участники форума, так что не обращайте внимания.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    6 августа 2012 г. 4:42
    Отвечающий
  • Видимо паравильно. Теперь форма перехватывает нажатия клавиш?

    Я с самого начала установил его в True, так что получается дело в фокусе.
    6 августа 2012 г. 10:42
  • Тогда у меня единственное предположение, что у вас метод не подписан на событие KeyDown.

    Выбираете форму, нажимаете F4, перехолдите в события и проверяете есть у вас вот такакая строка или нет:

    Я только что создал WinForms проект. На форму кинул текстбокс и нумерикапдаун. Установил кейпревью и подписался на событие. При неажатии на С, когда фокус в текстбокс, в него добавляется С. Когда нажимаю на С, а фокус ввода в нумерикапдаун, в нем появляется двойка.

    6 августа 2012 г. 11:17
    Отвечающий
  • а фокус ввода в нумерикапдаун, в нем появляется двойка.

    Я забыл сказать что не всегда так происходить, с первого раза у меня тоже получается, но во второй раз не получается.
    17 августа 2012 г. 6:38