2016-01-18 59 views
-2

此代碼包含在帶按鈕的文本框中。 在測試中,除了當你點擊Button1時,一切都是肉汁,它總是從第二行開始,而不是第一行。點擊Button2會將它扔到第一行,但它會破壞應用程序的目的。 Button1是一個開始按鈕,Button2是一個停止按鈕。我知道它與+ =有關,但只是將其設置爲=將所有東西都擰緊。有任何想法嗎?格式問題+ =和vbCrLF

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Timer1.Start() 
    TextBox1.Text += Date.Now.ToString("H:mm") 
End Sub 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim space As String = " " 
    Timer1.Start() 
    TextBox1.Text += " " + Date.Now.ToString("H:mm") & vbCrLf 
End Sub 
+0

'+ ='不是vba。你需要把它拼出來。 'TextBox1.Text = TextBox1.Text&Date.Now.ToString(「H:mm」)' –

+0

嗯,我已經嘗試了同樣的問題。它仍然開始在文本框的第二行 – user3341951

+0

也許它打敗了目的,但是*目的是什麼? 「空間」變量拼寫什麼魔法咒語?你點擊Button1時爲什麼不追加vbCrLf?爲什麼在Button2中加一個空格是個好主意?爲什麼有一個Timer什麼也不做?這是隨機的代碼,它做了隨機的事情,花一個小時思考應該發生什麼。 –

回答

0

如果您使用的是文本框設置有多條線路可以使用AppendText通過文本框的方法,使用的String.Format或連接字符串值追加到一個特定的文本框與Environment.NewLine一起所有的線。

例如

TextBox1.AppendText(
    String.Format(" {0}{1}", 
        Now.ToString("H:mm"), 
        Environment.NewLine)) 

我們也可以讓這種清潔通過先走一步,創造一個語言的擴展方法,如果目標框架3.5或更高

Public Module LanguageExtensions 
    <System.Diagnostics.DebuggerStepThrough()> 
    <System.Runtime.CompilerServices.Extension()> 
    Public Sub AppendHoursMinutes(ByRef sender As TextBox) 
     sender.AppendText(
      String.Format(" {0}{1}", 
          Now.ToString("H:mm"), 
          Environment.NewLine)) 
    End Sub 
End Module 

使用上述擴展

TextBox1.AppendHoursMinutes 

我們可以期待還創建一個方法,附加沒有回車

public Module LanguageExtensions 
    <System.Diagnostics.DebuggerStepThrough()> 
    <System.Runtime.CompilerServices.Extension()> 
    Public Sub AppendHoursMinutes(ByRef sender As TextBox) 
     sender.AppendText(
      String.Format(" {0}{1}", 
          Now.ToString("H:mm"), 
          Environment.NewLine)) 
    End Sub 

    <System.Diagnostics.DebuggerStepThrough()> 
    <System.Runtime.CompilerServices.Extension()> 
    Public Sub AppendHoursMinutesSameLine(ByRef sender As TextBox) 
     sender.Text = String.Concat(sender.Text, " ", Now.ToString("H:mm")) 
    End Sub 
End Module