如何实现在RichText中按下Tab时换为4个空格而不是失去焦点?也就是象代码编辑器那样.

解决方案 »

  1.   

    在下一个TAB点的代码中写下事件。
      

  2.   

    在你的RichTextBox的KeyDown事件中加上如下代码:Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 9 Then SendKeys "+{TAB}"
    End Sub“TAB”键的键值为9,当检测到“TAB”键被按下,就自动发送一个按键“SHIFT + TAB”,该键的放送方式为:SendKeys "+{TAB}"。就等于再反过来按一次“TAB”键,焦点就又回来了。这样当你在RichTextBox中按下“TAB”键就不会失去焦点了。
      

  3.   

    把所有的控件的tabstop设为false
      

  4.   

    对了,还要加上四个空格,我忘记了,只要再加一句:
    RichTextBox1.text=RichTextBox1.text & "    "     '四个空格Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 9 Then                               '检测是否按下了“TAB”键
       SendKeys "+{TAB}"               '焦点回来
       RichTextBox1.text=RichTextBox1.text & "    "   '加四个空格先
       RichTextBox1.SelStart = Len(RichTextBox1.Text) '这句是让光标停在文本的最后,
                                  '你不希望每次按下“TAB”键光标却跑到文本的最前面吧。
    end if
    End SubOK大功告成,给分吧。
      

  5.   

    谢谢了!
    不过我发现可以把 SendKeys "+{TAB}" 替换为 KeyCode = 0,这样相当于取消掉按键,焦点不会失去。