文本框的text属性一改变,就引发Change事件,问题是什么是你要的\不要的。
你的问题1,由程序更新数据,使用一个相关的标识变量(根据变量的值,决定取舍)
你的问题2,不仅右键菜单可以粘贴,Ctrl+V键也可以粘贴。简单屏蔽掉这些键,你的程序允许吗?

解决方案 »

  1.   

    你可以用keypress 事件,在其中过滤掉CTRL+V等所有的键。Const KEY_CTL_V = 22
    Const KEY_CTL_X = 24
    Const KEY_CTL_C = 3
    Const KEY_DELETE = 46
    Const KEY_BACKSPACE = 8
    Const KEY_ENTRY = 13
    Const KEY_LEFT = 37
    Const KEY_RIGHT = 39
    Const KEY_DOWN = 40
    Const KEY_UP = 38
    Const KEY_F8 = 119
    Const KEY_F9 = 120
    Const KEY_PGUP = 33
    Const KEY_PGDOWN = 34
    Const LeftMagin = 90  (还有其他) 。你可以text1_keypress 事件代码中判断keyascii 是否是以上这类值, 若是则不认为用户改变了数据,若不是则认为用户改变了数据。
      

  2.   

    以下是屏蔽右键菜单和Ctrl+V键的方法。
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If KeyAscii = 22 Then
            Timer1.Enabled = True
        End If    
    End SubPrivate Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = vbRightButton Then
            Text1.Enabled = False
            Timer1.Enabled = True
        End If
    End SubPrivate Sub Timer1_Timer()
        Clipboard.Clear
        If Text1.Enabled = False Then
            Text1.Enabled = True
        End If
        Timer1.Enabled = False
    End Sub
    思路是:在激活右键菜单前使文本框失效,以阻止右键菜单。在Ctrl+V粘贴前清空Clipboard。
    但是,如果你的程序使用菜单栏或工具栏且有编辑项,也要做相应的屏蔽。
    如有什么问题,大家再讨论。
      

  3.   

    唉都很复杂啊,有没简单点的?
    应该可以充分利用Change事件啊!
      

  4.   

    看来要换个思路了,算了,CSDN都不能解决!