我是 C# 新手,并尝试使用 DataGridView 显示后端生成的一些数据。甚至填充三行大约需要两分钟。我参考了 msdn 上的教程和其他一些来源。这是代码的一部分:
public partial class OrderBook : Form
{
private static DataTable order_dt = new DataTable();
public OrderBook()
{
InitializeComponent();
// columns in the DataTable
order_dt.Columns.Add("c1", typeof(string));
order_dt.Columns.Add("c2", typeof(string));
order_dt.Columns.Add("c3", typeof(int));
order_dt.Columns.Add("c4", typeof(string));
order_dt.Columns.Add("c5", typeof(int));
order_dt.Columns.Add("c6", typeof(string));
order_dt.Columns.Add("c7", typeof(int));
order_dt.Columns.Add("c8", typeof(int));
dgvOrderPanel.DataSource = order_dt; //dgvOrderPanel is the
//DataGridView component
foreach (DataGridViewColumn dgvc in dgvOrderPanel.Columns)
dgvc.Width = 65;
}
// add a new row to the DataTable on each call
public static void addRow(string order_info)
{
string[] fields = order_info.Split(' ');
order_dt.Rows.Add(fields[0], fields[1], int.Parse(fields[2]), fields[3],
int.Parse(fields[4]), fields[5], int.Parse(fields[6]),
int.Parse(fields[7]));
}
// the CellFormatting handler to determine the color of the row
private void dgvOrderPanel_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dgvOrderPanel.Rows[e.RowIndex].Cells["c2"].Value.Equals("B"))
{
dgvOrderPanel.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Blue;
}
else
{
dgvOrderPanel.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
}
}
// other methods...
}
每当后端通过套接字向前端发送包含 order_info 的字符串时,就会调用 addRow()。每个order_info 对应DataTable 和DataGridView 中的单行。
整个过程在同一个线程中执行。有没有想过为什么这么慢?任何建议表示赞赏!