2012-11-17 26 views
-1

問題 在VB標籤中,如果行數多於固定高度可支持的行數,則會切斷附加行,用戶只能看到第一對行。僅顯示VB標籤中的最新行

我需要它完全相反。我想看最新的5或6行。這意味着如果有更多的線條比標籤的固定高度可以顯示更多的線條,那麼不是簡單地將它們切斷,而是將所有線條向上移動,最後一條線條移動到底部。頂線可以被切斷,但最新的一條線應該處於底部。

的什麼,我試圖做 如果你看一個控制檯,像dir輸入一個命令實例,那麼它列出了最新的目錄,但是你看最新的讀取目錄底部。基本上,你會看到它讀取的最新目錄。你只能看到它讀取的最新5或6個目錄,而不是看到每一行打印的行。

另一個例子:看一個文本框。如果您輸入的文字多於高度,則會看到文本框自動滾動顯示文本,並顯示最新的行,而較舊的行繼續向上移動並最終切斷,直到您向上移動滾動條。我需要它是完全一樣的,除了沒有滾動條。

另一個示例:如果將標籤的TextAlign屬性設置爲Bottom Center,則會在添加更多行時看到文本向上移動。問題發生在標籤填滿線條並且文本超出高度並被切斷時。這不應該發生。頂部的文本應該被切斷,但最新的一行應該從底部開始。別人 ,我已經給了我們唯一的解決方案建議

解決方案是創建標籤派生的自定義控制。

有沒有其他辦法可以做到這一點?

謝謝你的幫助。

回答

0

在新表單上放置一個按鈕和一個標籤(以免弄亂現有代碼)並複製並粘貼下面的代碼並重復單擊該按鈕,看看是否可以解決您的問題。

很明顯,如果它確實存在,你仍然必須弄亂代碼,以適應你的特殊需求。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 

    Static TextLines As Generic.List(Of String) = Nothing 
    Static SingleLineHeight As Integer = Nothing 
    Static maxrows As Integer 
    Static qty As Integer = Nothing 
    Dim text As String = Nothing 
    Dim counta As Integer = Nothing 
    ' 
    'set MAX ROWS 
    maxrows = 6 
    ' Initalise 
    If TextLines Is Nothing Then TextLines = New Generic.List(Of String) 
    If SingleLineHeight = 0 Then 
     Label1.Text = "Test Line" 
     SingleLineHeight = Label1.Font.Height 
     Label1.Text = "" 
    End If 
    ' 
    'process 
    qty = qty + 1 
    text = "Line Number " & qty 
    TextLines.Add(text) 
    Label1.Text = "" 
    If TextLines.Count > maxrows - 1 Then TextLines.RemoveAt(0) 
    For counta = 0 To TextLines.Count - 1 
     Label1.Text = Label1.Text & TextLines(counta) & vbCrLf 
    Next 

End Sub