close
還記得曾經告訴自己,要趕快把以前用 vb 寫的程式換到 java 去。
到了最近,因為作業的關係才選定 eclipse 來寫作業(還滿好用的。只是…GUI的部分我不喜歡用SWT) 
現在,真的要換 vb dot net 了。
今天就在搞那個 RichTextBox 能不能 auto scroll 到最後一行,查了半天。
wesly 找到一個方法
            RichTextBox.Focus()
            RichTextBox.ScrollToCaret()
 
而我們擔心 focus 一直抓住focus,而user正好在使用別的control時,並不希望focus被顯示log的control抓走。
於是我再上網查了另一個方法,是使用api的
    Private Const WM_VSCROLL As Int32 = &H115
    Private Const SB_BOTTOM As Int32 = 7
    Private Declare Auto Function SendMessage Lib "user32.dll" ( _
    ByVal hwnd As IntPtr, _
    ByVal wMsg As Int32, _
    ByVal wParam As Int32, _
    ByVal lParam As Int32 _
    ) As Int32
 
    Private Sub AddLine(ByVal Destination As RichTextBox, ByVal Text As String)
        With Destination
            .AppendText(Text & ControlChars.NewLine)
            SendMessage(Destination.Handle, WM_VSCROLL, SB_BOTTOM, 0)
        End With
    End Sub
 
不過,我後來有再測試,多開一個textbox,在新的textbox輸入時,看是否會被richtextbox.focus搶走focus。
結果是沒有被搶。也許是我誤會了focus的意思,或者我測的方式有誤。
反正,這兩個方法在我們的solution裡應該是不會造成問題。
完畢
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 betaparticle 的頭像
    betaparticle

    betaparticle的部落格

    betaparticle 發表在 痞客邦 留言(0) 人氣()