WPFテキストボックスの切り取り、コピー、貼り付けを制限するにはどうすればよいですか?
切り取り、コピー、貼り付けは、あらゆるアプリケーションで使用される一般的なコマンドです。
<TextBox CommandManager.PreviewExecuted="textBox_PreviewExecuted"
ContextMenu="{x:Null}" />
上記のテキストボックスコードでは、CommandManagerクラスのPrviewExecutedイベントでこれらのコマンドを制限できます。
そして後ろのコードで以下のコードを追加すればあなたの仕事は終わりです
private void textBox_PreviewExecuted(object sender, ExecutedRoutedEventArgs e)
{
if (e.Command == ApplicationCommands.Copy ||
e.Command == ApplicationCommands.Cut ||
e.Command == ApplicationCommands.Paste)
{
e.Handled = true;
}
}
CommandName == "Paste"の比較が失敗するため、commandNameメソッドは日本語OSを搭載したシステムでは機能しません。私は次のアプローチを試しましたが、うまくいきました。また、コンテキストメニューを手動で無効にする必要はありません。
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;
}