WPF Textbox Logger-自动更新
我正在使用WPF中的文本框作为Logger。
我为每个步骤问题写一条消息
internal void WriteInfoMessage(int lognr, string v)
{
try
{
tb_log.Text += "\n" + v;
}
catch (Exception ex)
{
System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate { tb_log.Text += "\n" + v; });
tb_log.ScrollToEnd();
tb_log.BeginChange();
}
}
是,当消息框即将到来或完成主方法时,它是更新。如何更新每次记录?
主要方法代码
public void MainMethod()
{
controller.WriteInfoMessage(Lognr, $"Vorlage holen von systemCFG [MH]TemplatePositionName");
string position_TemplateName = sys.GetProfileString("MH", "TemplatePositionName", "TestTemplatePosition");
Iposition_std masterObj = controller.GetOrderTemplate(position_TemplateName).masterobject as Iposition_std;
controller.WriteInfoMessage(Lognr, $"Masterobjekt ist -> {masterObj}");
string topOrderName = controller.GetTagName(doc, "wbs");
log.WriteInfo(Lognr, $"TopOrder name is : {topOrderName}");
controller.WriteInfoMessage(Lognr, $"Projekt -> {topOrderName}");
string basicorderName = controller.GetTagName(doc, "cs");
log.WriteInfo(Lognr, $"basicorder name is : {basicorderName}");
controller.WriteInfoMessage(Lognr, $"Auftrag -> {basicorderName}");
string positionName = controller.GetTagName(doc, "id");
log.WriteInfo(Lognr, $"Position name is : {basicorderName}");
controller.WriteInfoMessage(Lognr, $"Position (Leitschaufel) -> {positionName}");
createdPosition = controller.CreateStrucure(masterObj, ConfigFile, positionName);
log.WriteInfo(Lognr, $"New position created : {createdPosition}");
controller.WriteInfoMessage(Lognr, $"Neue Position (Leitschaufel) wurde erstellt {createdPosition}");
}
I am using an TextBox in WPF as logger.
I write a message for each step
internal void WriteInfoMessage(int lognr, string v)
{
try
{
tb_log.Text += "\n" + v;
}
catch (Exception ex)
{
System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate { tb_log.Text += "\n" + v; });
tb_log.ScrollToEnd();
tb_log.BeginChange();
}
}
Problem is that it is update when a MessageBox is coming or when main method is finished. How can I update it every logging?
Main method piece of code
public void MainMethod()
{
controller.WriteInfoMessage(Lognr, quot;Vorlage holen von systemCFG [MH]TemplatePositionName");
string position_TemplateName = sys.GetProfileString("MH", "TemplatePositionName", "TestTemplatePosition");
Iposition_std masterObj = controller.GetOrderTemplate(position_TemplateName).masterobject as Iposition_std;
controller.WriteInfoMessage(Lognr, quot;Masterobjekt ist -> {masterObj}");
string topOrderName = controller.GetTagName(doc, "wbs");
log.WriteInfo(Lognr, quot;TopOrder name is : {topOrderName}");
controller.WriteInfoMessage(Lognr, quot;Projekt -> {topOrderName}");
string basicorderName = controller.GetTagName(doc, "cs");
log.WriteInfo(Lognr, quot;basicorder name is : {basicorderName}");
controller.WriteInfoMessage(Lognr, quot;Auftrag -> {basicorderName}");
string positionName = controller.GetTagName(doc, "id");
log.WriteInfo(Lognr, quot;Position name is : {basicorderName}");
controller.WriteInfoMessage(Lognr, quot;Position (Leitschaufel) -> {positionName}");
createdPosition = controller.CreateStrucure(masterObj, ConfigFile, positionName);
log.WriteInfo(Lognr, quot;New position created : {createdPosition}");
controller.WriteInfoMessage(Lognr, quot;Neue Position (Leitschaufel) wurde erstellt {createdPosition}");
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
几周前,我遇到了这个问题,我尝试了很多,但是大多数人都不适合我的需求,问题是我希望能够使用任何类,界面等的记录器,然后将其打印到TextBox / RichTextbox。我发现您可以在Logger窗口的主线程中使用EventArg并调用Logging.write.write。希望它能帮助 https://github.com/helix-development/logging/logging-sample-sample
I had this problem a few weeks ago, i tried a lot but most didn't work for my needs, problem was i wanted to be able to use logger from any class, interface etc and print out to textbox / richtextbox. i figured out that you could use a eventarg in the main thread of your logger window and call Logging.Write from anywhere and it will work, here is the sample code i made. hope it help https://github.com/Helix-Development/Logging-Sample