在一个简单的GUI c#中显示DataTable
本文关键字:GUI 显示 DataTable 简单 一个 | 更新日期: 2023-09-27 18:01:00
我有一个用c#编码的程序,它从具有多个IP地址的不同源接收UDP数据包。
我已经创建了一个数据表,存储所有这些IP地址和链接到源的信息,当我运行它时,我试图在程序中显示这个表
由于程序一直在侦听UDP数据包,因此表的查看应该实时更新。
我已经搜索了Datagridview,但我没有成功使用它。
我想用一种非常简单的方式在屏幕上显示如下内容:数据查看
static void Main(string[] args)
{
DataTable CommunicationTable = new DataTable();
initDataTableCommunication(CommunicationTable);
senderIdentifier SmartphoneTest = new senderIdentifier();
SmartphoneTest.addressIP = "192.120.120.0";
SmartphoneTest.message = "Started";
SmartphoneTest.port = 11000;
newEntryDateTableCom(SmartphoneTest, CommunicationTable);
senderIdentifier SmartphoneTest2 = new senderIdentifier();
SmartphoneTest2.addressIP = "192.120.45.9";
SmartphoneTest2.message = "Done";
SmartphoneTest2.port = 11000;
newEntryDateTableCom(SmartphoneTest2, CommunicationTable);
在这里,我"手动"完成了DataTable,但新条目将通过接收UDP数据包来创建
目前,我只能使用DataTable(Visual Studio(监视下的"范围",通过Debug可视化DataTable
抱歉我英语不好,提前感谢
您必须创建一个新的Windows窗体项目,并在其上放置一个DataGridView
控件。将CommunicationTable
定义为新创建的窗体的字段,并将CommunicationTable
初始化放在初始化代码中的某个位置(窗体的构造函数是一个很好的候选者(。此初始化还应将DataGridview
的DataSource
属性设置为CommunicationTable
。
然后在一个单独的线程中运行UDP侦听例程,并使其更新CommunicationTable
。但是不要忘记使用Form.Invoke()
来更新GUI线程中的数据。
下面是一个简化的例子:
DataTable CommunicationTable = new DataTable();
Thread listeningThread;
public Form1()
{
InitializeComponent();
CommunicationTable.Columns.Add("addressIP", typeof(string));
CommunicationTable.Columns.Add("port", typeof(int));
CommunicationTable.Rows.Add("127.0.0.1", 1100);
// Notice this assignment:
dataGridView1.DataSource = CommunicationTable;
listeningThread = new Thread(() => {
// UDP listener emulator.
// Replace with actual code but don't forget the Invoke()
for (int i = 0; i < 10; i++)
{
Invoke((MethodInvoker)delegate {
CommunicationTable.Rows.Add("127.0.0.1", 1024 + i); });
Thread.Sleep(300);
}
});
listeningThread.Start();
}