如何在基于Sub的RichTextBox中将行更改为特定颜色

时间:2014-02-17 15:17:02

标签: vb.net richtextbox

我创建了一个方法,在代码中你可以编写WritetoConsole(SomeString, LogType)但是当激活LogType时(每种类型的日志有不同的颜色),它会改变richtextbox的整个颜色,而不是实际的行那是进入的。

它应该是WinForm应用程序中的自定义控制台。所以基本上无论输入Message是什么都应该写入控制台,取决于LogitType。但我不希望它改变整个RichTextBox的文本颜色。我只想要输入的特定行

Dim NewLine As String = (Chr(13))
Dim LogType As LogerType
''' <summary>
''' Writes a Message to the Homework Helper Console
''' </summary>
''' <param name="Message">The Message to Display to Console</param>
''' <param name="LogitType">The Type of Message to Display to Console</param>
''' <remarks></remarks>
Public Sub WritetoConsole(Message As String, LogitType As Color)
    LogerType.Normal = Color.White
    LogerType.Warning = Color.Yellow
    LogerType.ErrorMessage = Color.Maroon
    LogerType.Homework = Color.Green
    LogerType.Project = Color.Red
    LogerType.Test = Color.RosyBrown
    If Message = Nothing Then
        rtbInput.AppendText(Errors(3))
    Else
        rtbInput.AppendText(NewLine & Message)
    End If


    If LogitType = LogerType.Normal Then
        rtbInput.ForeColor = LogerType.Normal
    ElseIf LogitType = LogerType.Warning Then
        rtbInput.ForeColor = LogerType.Warning
    ElseIf LogitType = LogerType.ErrorMessage Then
        rtbInput.ForeColor = LogerType.ErrorMessage
    ElseIf LogitType = LogerType.Homework Then
        rtbInput.ForeColor = LogerType.Homework
    ElseIf LogitType = LogerType.Project Then
        rtbInput.ForeColor = LogerType.Project
    ElseIf LogitType = LogerType.Test Then
        rtbInput.ForeColor = LogerType.Test
    ElseIf LogitType = Nothing Then
        WritetoConsole((Errors(3)), LogerType.ErrorMessage)
    Else
        MsgBox(Errors(4))
    End If

End Sub

1 个答案:

答案 0 :(得分:0)

您必须使用rtbInput.SelectionColor而不是rtbInput.ForeColor。所以:

Public Sub WritetoConsole(Message As String, LogitType As Color)
    LogerType.Normal = Color.White
    LogerType.Warning = Color.Yellow
    LogerType.ErrorMessage = Color.Maroon
    LogerType.Homework = Color.Green
    LogerType.Project = Color.Red
    LogerType.Test = Color.RosyBrown

    rtbInput.Select(rtbInput.TextLength, 0)

    If LogitType = LogerType.Normal Then
        rtbInput.SelectionColor= LogerType.Normal
    ElseIf LogitType = LogerType.Warning Then
        rtbInput.SelectionColor= LogerType.Warning
    ElseIf LogitType = LogerType.ErrorMessage Then
        rtbInput.SelectionColor= LogerType.ErrorMessage
    ElseIf LogitType = LogerType.Homework Then
        rtbInput.SelectionColor= LogerType.Homework
    ElseIf LogitType = LogerType.Project Then
        rtbInput.SelectionColor= LogerType.Project
    ElseIf LogitType = LogerType.Test Then
        rtbInput.SelectionColor= LogerType.Test
    ElseIf LogitType = Nothing Then
        WritetoConsole((Errors(3)), LogerType.ErrorMessage)
    Else
        MsgBox(Errors(4))
    End If

   If Message = Nothing Then
        rtbInput.AppendText(Errors(3))
    Else
        rtbInput.AppendText(NewLine & Message)
    End If

End Sub

瓦尔特