在一个简单的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

抱歉我英语不好,提前感谢

在一个简单的GUI c#中显示DataTable

您必须创建一个新的Windows窗体项目,并在其上放置一个DataGridView控件。将CommunicationTable定义为新创建的窗体的字段,并将CommunicationTable初始化放在初始化代码中的某个位置(窗体的构造函数是一个很好的候选者(。此初始化还应将DataGridviewDataSource属性设置为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();
}