如何在C#Win-Forms中动态填充数据网格视图(运行时)

时间:2013-07-30 06:20:23

标签: c# winforms dynamic datagridview

我有一个可以与连接的硬件通信的应用程序。当我打开硬件时,硬件将不断向应用程序发送一些数据。我能够从我的应用程序中的硬件读取数据。

现在我想连续地将这些数据记录到网格视图中(每当应用程序接收数据时,需要将新行添加到网格视图并填充该行中的数据)。

(或者请告诉我如何在网格视图中每隔1秒添加一行,并在运行时添加一些数据)

请帮忙。我是c#的新手。

感谢。

2 个答案:

答案 0 :(得分:1)

以下是适合您的演示。我认为您的数据类型为Info,如下所示,您可以根据您的数据结构(从硬件接收)相应地更改Properties

public partial class Form1 : Form {
   public Form1(){
      InitializeComponent();
      dataGridView1.AllowUserToAddRows = false;//if you don't want this, just remove it.
      dataGridView1.DataSource = data;
      Timer t = new Timer(){Interval = 1000};
      t.Tick += UpdateGrid;
      t.Start();
   }     
   private void UpdateGrid(object sender, EventArgs e){
      char c1 = (char)rand.Next(65,97);
      char c2 = (char)rand.Next(65,97);
      data.Add(new Info() {Field1 = c1.ToString(), Field2 = c2.ToString()});
      dataGridView1.FirstDisplayedScrollingRowIndex = data.Count - 1;//This will keep the last added row visible with vertical scrollbar being at bottom.
   }
   BindingList<Info> data = new BindingList<Info>();
   Random rand = new Random();
   //the structure of your data including only 2 fields to test
   public class Info
   {
        public string Field1 { get; set; }
        public string Field2 { get; set; }
   }  
}

答案 1 :(得分:0)

如果您将数据放在对象或变量中的某些位置,那么这将适合您。

// suppose you get the data in the object test which has two fields field1 and field2, then you can add them in the grid using below code:

grdView.Rows.Add(test.field1, test.field2);

我希望它会对你有所帮助.. :)