我的代码是:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Key==Key.LeftCtrl && e.Key==Key.C) || (e.Key==Key.RightCtrl && e.Key==Key.C))
{
MessageBox.Show("Copy not allowed !");
e.Handled = true;
}
}
或,another way
,我试过的是:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Key==Key.C) && (Keyboard.Modifiers==ModifierKeys.Control))
{
MessageBox.Show("Copy not allowed !");
e.Handled = true;
}
}
但他们不行!
请不要告诉我设置Focusable="False"
或IsHitTestVisible="False"
因为在那之后,我无法使用滚动条!
请帮忙。 感谢。
答案 0 :(得分:3)
你可以处理PreviewKeyDown
事件...你几乎拥有它,你只需要和(&)Keyboard.Modifiers
因为它可能包含的不仅仅是ModifierKeys.Control
:
private void PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.C && (Keyboard.Modifiers & ModifierKeys.Control) ==
ModifierKeys.Control)
{
MessageBox.Show("CTRL + C was pressed");
}
}
答案 1 :(得分:3)
我认为你的问题实际上并不是如何禁用ctrl + A和ctrl + C,只是因为你不希望用户这样做,而是为了防止用户复制文本框的内容。问题是,Ctrl + A Ctrl + C不是复制数据的唯一方法。用户可以选择文本,然后右键单击。
那么你应该做的就是不要覆盖击键,而是要触发的实际命令。 (您可能想要了解命令如何在WPF中工作。)
为此,只需将以下方法添加到您的班级
即可private void CancelCopyCommand(object sender, DataObjectEventArgs e)
{
MessageBox.Show("Copy not allowed !");
e.CancelCommand();
}
在构造函数中,注册命令如下: DataObject.AddCopyingHandler(richTextBox1,CancelCopyCommand);
答案 2 :(得分:0)
一个richTextbox用于输入Text,你可以将它设为readonly,那你为什么要阻止复制呢?
尝试使用图像以防止复制或禁用对焦/选择。如果用户选择“文本”,则销毁选择。
答案 3 :(得分:0)
您必须订阅PreviewKeyDown-Event,如果按下了Key-Combination,则必须在Handler中设置e.Handled = true
。