WPF: TextBox, который имеет событие, которое стреляет, когда клавиша Enter нажимается

Если у вас есть длинные списки поддиапазонов для извлечения или вы хотите красивый синтаксис, вы можете определить функцию для получения нескольких поддиапазонов из массива:

from itertools import chain

def extract(array,ranges):
    return list(chain( * (array[s:e] for s,e in ranges.items()) ))

array    = list(range(100,200))
subArray = extract(array,{ 0:1, 12:15, 35:39 })

print(subArray) # [100, 112, 113, 114, 135, 136, 137, 138]
19
задан Andreas Grech 3 May 2009 в 04:28
поделиться

1 ответ

Посмотрите этот пост в блоге из нескольких месяцев назад, где я прикрепляю «глобальный» обработчик событий к TextBox.GotFocus , чтобы выбрать текст.

По сути, вы можете обрабатывать событие KeyUp в вашем классе приложений, например:

protected override void OnStartup(StartupEventArgs e)
{
    EventManager.RegisterClassHandler(typeof(TextBox),
        TextBox.KeyUpEvent,
        new System.Windows.Input.KeyEventHandler(TextBox_KeyUp));

    base.OnStartup(e);
}

private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key != System.Windows.Input.Key.Enter) return;

    // your event handler here
    e.Handled = true;
    MessageBox.Show("Enter pressed");
}

... и теперь каждый TextBox в вашем приложении будет вызывать TextBox_KeyUp метод, когда пользователи вводят их.

Обновление

Как вы указали в своем комментарии, это полезно, только если каждый TextBox должен выполнять один и тот же код.

Чтобы добавить произвольное событие, такое как нажатие клавиши Enter, вам лучше изучить Attached Events . Я верю, что это может дать вам то, что вы хотите.

35
ответ дан 30 November 2019 в 02:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: