close
還記得曾經告訴自己,要趕快把以前用 vb 寫的程式換到 java 去。
到了最近,因為作業的關係才選定 eclipse 來寫作業(還滿好用的。只是…GUI的部分我不喜歡用SWT)
現在,真的要換 vb dot net 了。
今天就在搞那個 RichTextBox 能不能 auto scroll 到最後一行,查了半天。
wesly 找到一個方法
RichTextBox.Focus()
RichTextBox.ScrollToCaret()
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 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
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
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裡應該是不會造成問題。
完畢
全站熱搜