У меня есть TextBox в WPF, где мне нужно заполнить поле только вставкой (ctrl + v), а не путем ввода. Поэтому мне нужно ограничить весь нажатие клавиши, кроме ctrl + v. Поскольку WPF не имеет события нажатия клавиш, я сталкиваюсь с проблемой, чтобы ограничить нажатие клавишиОграничить keypress в текстовом поле wpf
ответ
ли это WPF стиль и использовать ApplicationCommands.Paste и сделать текстовое поле только для чтения.
Можете ли вы выслать мне код. Я совершенно не знаком с wpf –
@jeevan_jk и попробую вернуться за помощью ... нехорошо, чтобы у вас был код для людей. – kenny
@Wouter Большое спасибо, я внедрил его –
Если вы не разрешаете Right Click + Paste
, но только Ctrl + V
, я бы просто проверил, нажата ли клавиша-модификатор клавиши, и предотвратит все остальное.
Сделайте это в стиле WPF и используйте ApplicationCommands.Paste и сделайте текстовое поле только для чтения. – Wouter
вы можете добавить этот обработчик Key_Down к TextBox:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.Key==Key.V)
{
//Logic here
}
else
e.handled=true;
}
Так попробуйте это:
myTextBox.KeyDown += new KeyEventHandler(myTextBox_KeyDown);
private void myTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
input = myTextBox.Text;
}
else
{
input = "";
}
}
<TextBox IsReadOnly="True" Name="Policy_text">
<TextBox.CommandBindings>
<CommandBinding Command="ApplicationCommands.Paste" CanExecute="PasteCommand_CanExecute" Executed="PasteCommand_Executed" />
</TextBox.CommandBindings>
</Textbox>
и в коде позади
private void PasteCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = Clipboard.ContainsText();
}
private void PasteCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
Policy_text.Paste();
}
- 1. Попытки ограничить количество символов в текстовом поле
- 2. WPF Как ограничить максимальное количество строк в многострочном текстовом поле
- 3. WPF CommandParameter в текстовом поле
- 4. Ограничить количество слов в текстовом поле
- 5. Ограничить запятую в текстовом поле asp.net
- 6. AngularJS Ограничить длину строки в текстовом поле
- 7. Ограничить использование подчеркивания ('_') в текстовом поле ввода
- 8. Проверка десятичных чисел в текстовом поле WPF
- 9. TextPreview на текстовом поле WPF
- 10. Как использовать событие KeyPress в текстовом поле с символом Tab?
- 11. Стиль тегов в текстовом поле в WPF
- 12. Проверка в текстовом поле в WPF
- 13. Проверка в текстовом поле в wpf
- 14. не могу написать в текстовом поле wpf
- 15. разрешая * символ в текстовом поле C# WPF
- 16. WPF - текст в текстовом поле не выбирается?
- 17. Имитировать события клавиатуры в текстовом поле WPF
- 18. Текст размытия WPF в текстовом поле
- 19. WPF Datepicker прокручивает даты в текстовом поле
- 20. Показать XML в текстовом поле WPF
- 21. Контекстная вкладка в текстовом поле WPF.
- 22. Как сделать автозаполнение в текстовом поле wpf?
- 23. Установить фокус на текстовом поле в WPF
- 24. WPF - перейти к строке в текстовом поле
- 25. Как отложить обновление в текстовом поле WPF
- 26. Свойство не обновляется в текстовом поле - WPF
- 27. Как имитировать Вставить в текстовом поле WPF?
- 28. Тип метаданных в текстовом поле WPF InvalidOperationException
- 29. Установить фокус в текстовом поле WPF
- 30. Порядок выполнения в текстовом поле WPF
Ну, я на самом деле не пробовал это, но, возможно, вы могли бы установить «нажатия клавиши» обработчик, который будет проверять длину входной строки. Итак, If (input.length()> 1) // принимаем вход else // input = ""; –
@JohnAugust, а если он вставляет только 1 персонаж за раз? – learningNew
спасибо брату, но если я вставляю содержимое, тогда длина будет увеличиваться, и это ограничит содержание –