2017-03-14 8 views
3
私のUWPアプリケーションで

が、私は私のTextBox Enterキーを押下することにより、新しい行に移動することができるようにしたいが、私はまたCtrlキー + を押す入力したときにアクションをトリガーする必要があります。AcceptsReturnがtrueのときCtrl + EnterをTextBoxで処理する方法は?

問題は、私はへの道を見つけることができないようですが、私はを入力+ Ctrlキーを下に押すと、テキストは次の行に行くことを防ぎます。ここで私が試したコードです。

XAMLは、コンストラクタで

<TextBox x:Name="TextBox1" AcceptsReturn="True" /> 

TextBox1.AddHandler(KeyDownEvent, new KeyEventHandler(TextBox1_KeyDown), true); 

ハンドラ

private void TextBox1_KeyDown(object sender, KeyRoutedEventArgs e) 
{ 
    var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control); 
    if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && e.Key == VirtualKey.Enter) 
    { 
     e.Handled = true; 
    } 
} 

答えて

3

あなたが作成することができますTextBoxから継承し、新しい行を追加しないようにbase.OnKeyDownメソッドを起動する完全なコントロールを持つメソッドOnKeyDownをオーバーライドするカスタムクラスです。

class CTRLEnterTextBox : TextBox 
{ 
    protected override void OnKeyDown(KeyRoutedEventArgs e) 
    { 
     if (Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).HasFlag(CoreVirtualKeyStates.Down) && e.Key == VirtualKey.Enter) 
     { 
      e.Handled = true; 
     } 
     else 
     { 
      base.OnKeyDown(e); 
     } 
    } 
} 
+0

ありがとうございます!これはまさに私が望んでいたものです。 – Jessica

関連する問題