mjhcad 发表于 2014-8-7 15:27:00

tx如何在不设置只读的情况下拦截Ctrl+C组合键来阻止复制?

请问:tx如何在不设置只读的情况下拦截Ctrl+C组合键来阻止复制?
       在keydown中用   e.Control and e.KeyCode=Keys.C 拦截不了。

iceman 发表于 2014-8-7 19:07:00

回复 1楼mjhcad的帖子

不好意思,和你确认下,是通过以下方法设置的只读吗?

            this.textControl1.EditMode = TXTextControl.EditMode.ReadOnly;


这时 tx 已经无法操作,为什么好要禁止快捷键呢?我不是十分理解

mjhcad 发表于 2014-8-11 08:54:00

版主,我的意思是不设置只读,既在正常的情况下,如何拦截ctrl+C。

iceman 发表于 2014-8-11 18:53:00

回复 3楼mjhcad的帖子

请尝试以下代码看能否解决你的问题:

      private void textControl1_KeyDown(object sender, KeyEventArgs e)
      {

            if (e.Control&&e.KeyCode==Keys.C)
            {
                e.Handled = true;
            }
      }

mjhcad 发表于 2014-8-12 09:26:00

谢谢版主,我试试看。

iceman 发表于 2014-8-12 14:38:00

回复 5楼mjhcad的帖子

请问结果如何?

mjhcad 发表于 2014-8-13 08:55:00

试了,还是不行。
版主试试在您的代码中加入一个对话框Msgbox,看看能不能弹出来。

dywazg 发表于 2014-8-13 09:51:00

回复 7楼mjhcad的帖子

在上边的代码中弹不弹对话框和能不能拦截复制没啥关系吧
关键看你还能用快捷键复制吗

iceman 发表于 2014-8-13 16:14:00

回复 7楼mjhcad的帖子

指的是在 if 里面添加吗?是可以弹出来因为代码还是会走完整个事件。
快捷键通过 6# 代码是可以屏蔽成功的,录制了一段Video,请你查看。



或者如果你想彻底清除剪切板数据,可以使用以下代码:
      private void textControl1_KeyDown(object sender, KeyEventArgs e)
      {

            if (e.Control&&e.KeyCode==Keys.C)
            {
                e.Handled = true;
                Clipboard.Clear();
            }
      }

mjhcad 发表于 2014-8-14 07:55:00

谢谢。我用的是VBnet2008。在if中加个消息框,如果检测到同时按下Ctrl+C应该弹出消息框,但没有成功过。
页: [1] 2
查看完整版本: tx如何在不设置只读的情况下拦截Ctrl+C组合键来阻止复制?