【发布时间】:2009-06-02 06:24:36
【问题描述】:
如何限制 WPF 文本框的剪切、复制和粘贴?
【问题讨论】:
-
我对 WPF 了解不多。您可以改用标签(这不会让您进行剪切/复制/粘贴。
-
但是我希望用户通过键盘输入数据。
标签: c# wpf wpf-controls
如何限制 WPF 文本框的剪切、复制和粘贴?
【问题讨论】:
标签: c# wpf wpf-controls
剪切、复制和粘贴是任何应用程序使用的常用命令,
<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;
}
}
【讨论】:
e.Command == ApplicationCommands.Cut,而不是强制转换和依赖可能因本地化而改变的字符串。我向 Prashant 提交了修改建议。
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;
}
【讨论】: