Для вашего конкретного случая эффективный подход к преобразованию оценки в оценку в 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
Можно прервать нажатия клавиш в PreviewKeyDown
событие. Установите e.Handled
участник к true
и это предотвратит на самом деле обработку ключей.
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
.