防止复制文本框值

时间:2012-08-04 17:15:57

标签: c# winforms

我有2个问题。首先,我想做一些类似下面的代码,阻止文本框中的(CTRL + C),但它不起作用。它不会在消息框中显示任何内容。

第二个问题是当用户按下(CTRL + C)时我怎么能做什么都不会保存在剪贴板中或按下后自动删除值(CTRL + C)

以下是代码:

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.C && e.KeyCode == Keys.LControlKey)
        {
            MessageBox.Show("NOT ALLOWED");
        }

    }

2 个答案:

答案 0 :(得分:3)

你将KeyCode的平等与两个不同的值进行比较,它永远不会同时存在。我认为您打算检查Control

if(e.KeyCode == Keys.C && e.Control) {
    MessageBox.Show("NOT ALLOWED");
}

至于停止复制操作,它应该像以下一样简单:

e.SuppressKeyPress = true;

您可以随时使用以下方式清除剪贴板:

Clipboard.Clear();

答案 1 :(得分:0)

您可以使用系统级键盘挂钩来拦截任何键盘敲击组合。

键盘挂钩函数是用VC ++中的.net编写的。但是对于在c#中使用,有基于pinvoke的包装库。

在.net中搜索键盘钩子。

有两种类型的钩子:应用程序级别和系统级别。根据您的要求,您可以做出正确的选择。

我希望这可以帮助你继续前进。