2015-09-10 3 views
0

У меня есть TextBox в WPF, где мне нужно заполнить поле только вставкой (ctrl + v), а не путем ввода. Поэтому мне нужно ограничить весь нажатие клавиши, кроме ctrl + v. Поскольку WPF не имеет события нажатия клавиш, я сталкиваюсь с проблемой, чтобы ограничить нажатие клавишиОграничить keypress в текстовом поле wpf

+0

Ну, я на самом деле не пробовал это, но, возможно, вы могли бы установить «нажатия клавиши» обработчик, который будет проверять длину входной строки. Итак, If (input.length()> 1) // принимаем вход else // input = ""; –

+0

@JohnAugust, а если он вставляет только 1 персонаж за раз? – learningNew

+0

спасибо брату, но если я вставляю содержимое, тогда длина будет увеличиваться, и это ограничит содержание –

ответ

2

ли это WPF стиль и использовать ApplicationCommands.Paste и сделать текстовое поле только для чтения.

+0

Можете ли вы выслать мне код. Я совершенно не знаком с wpf –

+0

@jeevan_jk и попробую вернуться за помощью ... нехорошо, чтобы у вас был код для людей. – kenny

+0

@Wouter Большое спасибо, я внедрил его –

0

Если вы не разрешаете Right Click + Paste, но только Ctrl + V, я бы просто проверил, нажата ли клавиша-модификатор клавиши, и предотвратит все остальное.

+0

Сделайте это в стиле WPF и используйте ApplicationCommands.Paste и сделайте текстовое поле только для чтения. – Wouter

1

вы можете добавить этот обработчик 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; 
    } 
0

Так попробуйте это:

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 = ""; 
     } 

    } 
0
<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(); 
    } 
Смежные вопросы