【问题标题】:Make WPF textbox as cut, copy and paste restricted将 WPF 文本框设置为剪切、复制和粘贴受限
【发布时间】:2009-06-02 06:24:36
【问题描述】:

如何限制 WPF 文本框的剪切、复制和粘贴?

【问题讨论】:

  • 我对 WPF 了解不多。您可以改用标签(这不会让您进行剪切/复制/粘贴。
  • 但是我希望用户通过键盘输入数据。

标签: c# wpf wpf-controls


【解决方案1】:

剪切、复制和粘贴是任何应用程序使用的常用命令,

<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 提交了修改建议。
  • 我在 Windows Phone 应用程序 8.1 中遇到了同样的问题。 windows phone 应用程序中没有 CommandManager。任何人都可以帮忙吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    相关资源
    最近更新 更多