如何在窗体或控制台中显示类库中变量的内容
本文关键字:变量 类库 显示 窗体 控制台 | 更新日期: 2023-09-27 18:19:07
我有一个c#解决方案,其中包含一个项目和一个由别人编写的类库。类库通过wifi获取GPS数据。该项目在地图上显示处理后的数据。现在,为了调试,我想实时查看类库中一些变量的内容。
我试图使用
System.Diagnostics.Debug.Write(value)
没有成功。它似乎什么也不做。
我也尝试了"MessageBox.Show(value.ToString())",这是很好的,但它停止了wifi读取并中断了程序,因为我需要按下OK按钮,每次它出现。
此外,我在类库中添加了一个windows窗体(其中包含一个textBox)来打印textBox中的数据,然而,当我写:
Form1.textBox1.Text = value.ToString()
它给了我这个错误:
错误3 'MapNMEA.Form1。' users 'john' documents ' visual Studio 2010'Projects'new ver of map purecom'MapExplorer'MapExplorer'MapNMEA'MapNMEA'SerialPort.cs 184 27 MapNMEA
"MapNMEA"是类库的名称。此外,"MapExplorer"是解决方案和项目的名称。"SerialPort.cs"是类库中的一个文件,我在其中编写了上面的代码。
我的问题是如何实时显示这些变量的内容(它们是3,4个变量),这种行为不应该阻止wifi阅读。我需要这样做,因为一个不太懂编程的电工想要检查GPS设备是否正确地将数据发送到我的计算机。
UPDATE 1:实际上我注意到System.Diagnostics.Debug.Write(value)
正在工作,但由于在调试窗口中出现了太多的警告消息,我没有注意到它。现在,如果我可以删除(或隐藏)其他(警告)消息,我将只看到我想要的输出。你知道吗?
如果您先附加侦听器(Debug.Listeners.Add( new _a_listener_type() )
),则Debug.Write
应该没问题。
另外,您可能应该知道Debug
类上的AutoFlush
属性,它决定是否自动调用Flush
。
Debug.Write
应该可以工作-默认情况下,如果您附加了调试器,它将写入Visual Studio中的'Debug'窗口。你确定你找对地方了吗?
如果你想使用表单方法,你需要跟踪打开的表单实例,并给它一个公共方法。例如:
public void WriteDebug(string message) {
TextBox1.Text += message + Environment.NewLine;
}
那么您可以调用formInstance.WriteDebug(message);
运行调试构建吗?此外,您的代码与文本框不工作,因为textBox1
是非公共的
我认为你可能没有搜索正确的位置:是否有什么东西阻止你在去目标之前先在PC上调试?如果没有,你可能应该使用传统的方法:在变量上设置间谍,使用IDE (Visual Studio)来监视它们,等等。
如果你真的需要在没有高级调试工具的情况下在目标上运行,那么你可能想看看一些更简单的解决方案:
- 将它们记录到一个文本文件(附加或替换,无论你需要什么),然后在手边打开一个查看器
- 用文本框创建另一个非模态表单,并在每次需要刷新 时调用form2.writeDbgTextBox(String)
确保在发布时删除此代码(例如。通过将它们放在#if DEBUG节中)
无论发生什么,都不要尝试写入现有的消息框!它们是用来弹出和关闭的,而不是与你的代码交互。