Сделайте текстовое поле WPF, как сокращено, копию и вставку ограниченными

Да, интерпретируемые языки работают медленно ...

Однако учтите следующее. У меня была проблема, чтобы решить. Мне потребовалось 4 минуты, чтобы решить проблему в Python, а запуск программы занял 0,15 секунды. Затем я попытался написать это на C, и у меня было время выполнения 0,12 секунды, и мне потребовался 1 час, чтобы написать это. Все это потому, что практическим способом решения рассматриваемой проблемы было использование хеш-таблиц, и хеш-таблица все равно доминировала во время выполнения.

26
задан Sauron 14 September 2009 в 15:59
поделиться

2 ответа

Вырезать, Копировать и Вставить являются общими командами, используемыми в любом приложении,

<TextBox CommandManager.PreviewExecuted="textBox_PreviewExecuted"
         ContextMenu="{x:Null}" />

в приведенном выше коде текстового поля мы можем ограничить эти команды в событии PrviewExecuted класса CommandManager

и в коде позади добавления ниже код и ваша работа сделана

private void textBox_PreviewExecuted(object sender, ExecutedRoutedEventArgs e)
{
     if (e.Command == ApplicationCommands.Copy ||
         e.Command == ApplicationCommands.Cut  || 
         e.Command == ApplicationCommands.Paste)
     {
          e.Handled = true;
     }
}
45
ответ дан 28 November 2019 в 06:40
поделиться

Метод commandName не будет работать в системе с японской ОС, так как сравнение commandName == "Paste" завершится ошибкой. Я попробовал следующий подход, и у меня он сработал. Также мне не нужно отключать контекстное меню вручную.

В файле XaML:

<PasswordBox.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Paste"
    CanExecute="CommandBinding_CanExecutePaste"></CommandBinding>
</PasswordBox.CommandBindings>

В коде позади:

private void CommandBinding_CanExecutePaste(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = false;
    e.Handled = true;
}
16
ответ дан 28 November 2019 в 06:40
поделиться
Другие вопросы по тегам:

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