最近几天被RichTextBox弄烦了。我在做一个编辑器,只允许输入文字,不允许有图片等其它内容。并且还实现了Ctrl+V等捕获消息等操作。但目前有一问题,当我拷贝一个快捷方式文件,在编辑框中点击Ctrl+V时(当前的状态程序菜单的粘贴不可用),RichTextBox会粘贴一个快捷方式的链接。怎么样才能实现RichTextBox只允许输入文本啊。

解决方案 »

  1.   

    想出一种可爱的办法:
    Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyControl Then
        RichTextBox1.Locked = True
    End If
    End SubPrivate Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyControl Then
        RichTextBox1.Locked = False
    End If
    End Sub
      

  2.   

    呵呵,我想应该这么做:
    首先,监测剪贴板的变化(参考:http://ninputer.html.533.net/works.htm),然后,用GetClipboardFormatName获得剪贴板格式的名称,如果是文本类型,则保留剪贴板的数据,否则清空剪贴板
      

  3.   

    呵呵,上面的代码有BUG。按住左边的Ctrl不动,然后按一下右边的Ctrl,最后按一下V……
      

  4.   

    用子类技术监测WM_Paste消息
    如果剪贴板中是非法数据,则拦截他
      

  5.   

    //用子类技术监测WM_Paste消息
    //如果剪贴板中是非法数据,则拦截他
    这个应该可以。不过zyl910解决什么问题都是用子类的哦,呵呵俺没想到,要学习
      

  6.   

    是呀,用子类应该可以解决你的问题另外,可用:
    If Clipboard.GetFormat(vbCFText) = True Then
    '...
    End If
    判断数据剪贴板是否含有文本
      

  7.   

    检查 CLIPBOARD 中的内容算了.如果是文本,按C+V则贴,否则,清空它.
      

  8.   

    并不是这么回事,而是CTRL+V的这步操作根本就没有办法检测到(当然在普通操作状态下,CTRL+V是用子类技术检测的),当我把粘贴这个菜单的Enable属性改为False后,就没有办法检测了。