【发布时间】:2018-03-26 03:58:45
【问题描述】:
我有一个自定义类可用作 winform 应用程序中的调试控制台。它写的一切都很好,除了它永远不会进入下一行(wordwrap 故意设置为 false)。这是我的课:
public static class ConsoleEx
{
private static RichTextBox outTarget;
public static void Initialize(RichTextBox target) { outTarget = target; }
public static void Write( string source, string message ) { Write( source, Color.LightSkyBlue, message );}
public static void Write( string source, Color sourceColor, string message ) { Write( source, sourceColor, message, Color.Silver );}
public static void Write( string source, Color sourceColor, string message, Color messageColor )
{
if ( outTarget.InvokeRequired )
{
outTarget.Invoke( (MethodInvoker)delegate { Write( source, sourceColor, message, messageColor ); } );
return;
}
int wordStart = outTarget.TextLength;
outTarget.AppendText( source );
outTarget.Select(wordStart, source.Length);
outTarget.SelectionColor = sourceColor;
wordStart = outTarget.TextLength;
outTarget.DeselectAll();
outTarget.AppendText( message );
outTarget.Select(wordStart, source.Length);
outTarget.SelectionColor = messageColor;
outTarget.DeselectAll();
}
public static void WriteLine( string source, string message ) { Write( source, Color.LightSkyBlue, message);}
public static void WriteLine( string source, Color sourceColor, string message ) { Write( source, sourceColor, message, Color.Silver );}
public static void WriteLine( string source, Color sourceColor, string message, Color messageColor )
{
if (outTarget.InvokeRequired)
{
outTarget.Invoke((MethodInvoker)delegate { WriteLine(source, sourceColor, message, messageColor); });
return;
}
Write( source, sourceColor, message, messageColor );
outTarget.AppendText( Environment.NewLine );
}
}
如您所见,我有一个 Write 和一个 WriteLine 部分。当然,写入不会追加新行。但是当我使用 WriteLine 时,它会执行并执行最后一行outTarget.AppendText( Environment.NewLine );,并且我假设它会按照预期添加它。但它不起作用。在等待大约 20 行打印到“控制台”RichTextBox 后,每一行都只是附加到第 0 行。有什么想法吗?
【问题讨论】:
-
留言后有没有试过“\n”?
标签: c# newline richtextbox