RichTextBox_logs.AppendText(Environment.NewLine);返回两条新线?
Posted
技术标签:
【中文标题】RichTextBox_logs.AppendText(Environment.NewLine);返回两条新线?【英文标题】:RichTextBox_logs.AppendText(Environment.NewLine); is returning two new lines? 【发布时间】:2021-11-08 12:25:39 【问题描述】:我不知道为什么,但它总是输入两个新行:
private void getMyIPAddress()
String Address = "";
this.Dispatcher.Invoke(() =>
this.RichTextBox_logs.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
);
while (true)
this.Dispatcher.Invoke(() =>
this.RichTextBox_logs.AppendText(Environment.NewLine);
//this.RichTextBox_logs.ScrollToEnd();
);
WebRequest request = WebRequest.Create("http://checkip.dyndns.com/");
try
using (WebResponse response = request.GetResponse())
using (StreamReader stream = new StreamReader(response.GetResponseStream()))
Address = stream.ReadToEnd();
int first = Address.IndexOf("Address: ") + 9;
int last = Address.IndexOf("</body>");
if (CurrentAddressHolder != Address.Substring(first, last - first))
CurrentAddressHolder = Address.Substring(first, last - first);
this.Dispatcher.Invoke(() =>
this.textBox_ip.Text = CurrentAddressHolder;
);
this.Dispatcher.Invoke(() =>
this.RichTextBox_logs.AppendText("IP is " + CurrentAddressHolder);
);
catch(Exception e)
this.Dispatcher.Invoke(() =>
this.RichTextBox_logs.AppendText(e.ToString());
);
我是多线程新手,我不确定它是否会影响新行的语法。
我们非常欢迎任何输入或代码修订/改进。谢谢。
【问题讨论】:
请描述一下“总是输入两个新行”。因为在所附的屏幕截图上一直只添加一行 -IP is 49.145.41.47
。
如果真的每次都加了两个return,你有没有试过把调试日志放在this.RichTextBox_logs.AppendText(Environment.NewLine);
和this.RichTextBox_logs.AppendText("IP is " + CurrentAddressHolder);
后面?
【参考方案1】:
看来你的问题是行距。
解决方案一:
使用以下方法代替AppendText()
方法向RichTextBox
添加文本行:
public void AddText(RichTextBox rtb, string message, double spacing = 4)
var paragraph = new Paragraph() LineHeight = spacing ;
paragraph.Inlines.Add(new Run(message));
rtb.Document.Blocks.Add(paragraph);
使用此方法,您将能够通过设置 LineHeight 值以编程方式更改段落之间的行距。
使用此方法时无需添加Environment.NewLine
。每个块(段落)将自动格式化为不同的行。
解决方案二:
尝试更改段落边距(参见以下帖子https://***.com/a/445897/6630084):
<RichTextBox x:Name="RichTextBox_logs" >
<RichTextBox.Resources>
<Style TargetType="x:Type Paragraph">
<Setter Property="Margin" Value="0"/>
</Style>
</RichTextBox.Resources>
...
<RichTextBox>
【讨论】:
以上是关于RichTextBox_logs.AppendText(Environment.NewLine);返回两条新线?的主要内容,如果未能解决你的问题,请参考以下文章