思路是这样的,RichTextBox文本中含有中文字符,先将图片放到剪贴板,再模拟粘贴操作。此时图片能放到RichTextBox中,但是位置不对,并不是我要求的文本的最后。而实际上我插入前是模拟end键操作了。请问如何解决??请高手们指教

解决方案 »

  1.   

    我插入前是模拟end键操作----应该是Ctrl+End吧
      

  2.   

    楼上的谢谢了,我是用Ctrl+End,问题不在这里。如果全英文,一点问题都没有,全中文的话正好是一半的位置。例如:如果有6个中文字符,光标位置在第6个之后(selStart属性为6),执行粘贴操作时,图片粘贴在第三个字符之后,即认为一个中文字符占两。问题找到,但是不知道怎么解决
      

  3.   

    Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
    Private Sub Command1_Click()
    Clipboard.Clear
    RichTextBox1.Text = "abc中华人民共和国"
    Clipboard.SetData Picture1.Picture
    RichTextBox1.SelStart = Len(RichTextBox1.Text)
    RichTextBox1.SelText = vbCrLf
    RichTextBox1.SetFocus
    SendKeys Space(lstrlen(RichTextBox1.Text) - Len(RichTextBox1.Text))
    SendKeys "^v", True
    End Sub
      

  4.   

    tong yi lou shang de.
      

  5.   

    谢谢northwolves(狼行天下) 的回答。这个方法对于放一个图片可以勉强使用,但是需要再插入多个图片就不好使了,多余的空格怎么办?
      

  6.   

    唉,还是用最笨的办法,模拟backspace键,删除多余空格
      

  7.   

    哈哈 我试了一下 你就多写几个 SendKeys 
    SendKeys "^End"
    SendKeys "^End"
    SendKeys "^End"
    SendKeys "^End"
    SendKeys "^End"
    SendKeys "^End"
    SendKeys "^End"
    SendKeys "^End"
    '这时肯定是文章末尾了
      

  8.   

    Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_PASTE As Long = &H302Function Paste2RTB(rtb As RichTextBox) As Boolean
        Dim lLen As Long, lExtra As Long
        With rtb
            lLen = Len(.Text)
            lExtra = LenB(StrConv(.Text, vbFromUnicode)) - lLen
            .SelStart = lLen
            If lExtra > 0 Then
                .SelText = Space$(lExtra)
            End If
            SendMessage .hwnd, WM_PASTE, 0, ByVal 0
            If lExtra > 0 Then
                .SelStart = Len(.Text) - lExtra
                .SelLength = lExtra
                .SelText = ""
            End If
        End With
    End FunctionPrivate Sub Command1_Click()
        Paste2RTB RichTextBox1
    End SubPrivate Sub Form_Load()
        Clipboard.Clear
        RichTextBox1.Text = "abc中华人民共和国"
        Clipboard.SetData Picture1.Picture
    End Sub
      

  9.   

    我也遇到這個問題. 我是想在文件的任何位置插入圖片, 如果是中文的話, 插入圖片的位置并不是SelStart的位置, 而是 SelStart值的一半