VB6中使用RichTextBox控件,当按ctrl+space从中文输入法(我用的是陈桥智能五笔输入法)切换输入法到英文状态时,所打出的英文字符会有变化,再按ctrl+space切换到中文输入法,这里输入的中文字符都是乱码!请问:这是怎么回事?怎么解决?
出现乱码后,我设置msgbox RichTextBox1.fontsize & RichTextBox1.fontname & 
RichTextBox1.fontcharset,查看信息,和原来并没有什么两样。

解决方案 »

  1.   

    问题是这样的:当一起动时,输入内容都是正常的。但是按ctrl+space从中文输入法(我用的是陈桥智能五笔输入法)切换输入法到英文状态时,所打出的英文字符会有变化,再按ctrl+space切换到中文输入法,这时输入的中文字符都是乱码!
      

  2.   

    我敢肯定许多人都用过RichTextbox,难道你们都没有遇到过这样的问题?
      

  3.   

    单纯的Textbox没有这样的问题,但RichTextbox就有这样的问题。
      

  4.   

    各位阁下都认为是版本有问题?我用的是带SP3的VB6中文企业版,还没有打过SP5。请问SP5哪里有下载吗?
      

  5.   

    这个可能是RichTextBox的bug,按下ctrl后可能是调用了什么格式,我曾经调试过,每次重载后正常。既然这样可以在key_up中加如下代码(测试后正常):
    private sub RichTextBox1_keyup((KeyCode As Integer, Shift As Integer)
       If (Shift = vbCtrlMask And KeyCode = vbKeySpace) Or _
          (KeyCode = vbKeySpace And Shift = vbCtrlMask) Then '当输入空格时检查文本行为。
          Dim Position As Long
          Dim SelectiveText As Long
          Position = rtfDiary.SelStart
          SelectiveText = rtfDiary.SelLength
          With rtfDiary
              .Text = rtfDiary.Text
              .SelStart = Position
              .SelLength = SelectiveText
          End With
       End If
    end sub
      

  6.   

    qingming81(晴明)的方法倒很管用。谢谢。
      

  7.   

    上述的代码再稍作修改private sub RichTextBox1_keyup((KeyCode As Integer, Shift As Integer)
       If (Shift = vbCtrlMask And KeyCode = vbKeySpace) Or _
          (KeyCode = vbKeySpace And Shift = vbCtrlMask) Then '当输入空格时检查文本行为。
          Dim Position As Long
          Dim SelectiveText As Long
          With RichTextBox1
               Position = .SelStart
               SelectiveText = .SelLength
              .Text = rtfDiary.Text
              .SelStart = Position
              .SelLength = SelectiveText
          End With
       End If
    end sub
      

  8.   

    还是有一点错。测试的控件名总忘记了改:
    private sub RichTextBox1_keyup((KeyCode As Integer, Shift As Integer)
       If (Shift = vbCtrlMask And KeyCode = vbKeySpace) Or _
          (KeyCode = vbKeySpace And Shift = vbCtrlMask) Then '当输入空格时检查文本行为。
          Dim Position As Long
          Dim SelectiveText As Long
          With RichTextBox1
               Position = .SelStart
               SelectiveText = .SelLength
              .Text = .Text
              .SelStart = Position
              .SelLength = SelectiveText
          End With
       End If
    end sub
      

  9.   

    打SP5仍然存在问题。qingming81(晴明)的代码加入后,倒是没有再出现乱码。