Как отключить ярлыки в WPF TextBox

Для вашего конкретного случая эффективный подход к преобразованию оценки в оценку в O (1) сложности времени будет состоять в использовании 100 минус оценка, деленная на 10, в качестве строкового индекса для получения буквенной оценки :

def get_grade(score):
    return 'EDDDDCCBBAA'[(100 - score) // 10]

, так что:

print(get_grade(100))
print(get_grade(91))
print(get_grade(90))
print(get_grade(50))
print(get_grade(30))
print(get_grade(10))
print(get_grade(0))

выводит:

E
E
D
C
B
A
A
7
задан Jasper 8 September 2011 в 19:17
поделиться

2 ответа

Можно прервать нажатия клавиш в PreviewKeyDown событие. Установите e.Handled участник к true и это предотвратит на самом деле обработку ключей.

3
ответ дан 7 December 2019 в 10:08
поделиться
public Window1()
{
    InitializeComponent();
    CommandManager.AddPreviewCanExecuteHandler(_textBox, _canExecute);
}

private void _canExecute(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = false;
    e.Handled = true;
}

Вышеупомянутое будет препятствовать тому, чтобы TextBox заявил, что это может обработать любую команду. Можно выборочно выбрать, какие команды Вы хотите отключить путем исследования EventArgs. Или можно сделать это в XAML:

<TextBox x:Name="_textBox">
    <TextBox.CommandBindings>
        <CommandBinding Command="ApplicationCommands.Copy" CanExecute="_canExecute"/>
    </TextBox.CommandBindings>
</TextBox>

Здесь мы просто отключаем выполнение команды Copy. Ctrl-C не будет работать, ни будет контекстное меню или главное меню. На самом деле любое управление, которое выполняет команду Copy, будет отключено, если фокус будет в TextBox.

3
ответ дан 7 December 2019 в 10:08
поделиться
Другие вопросы по тегам:

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