0

私はC#が初めてで、DataGridViewを使用してバックエンドで生成されたデータを表示しようとしています。3 つの行にデータを入力するのに約 2 分かかりました。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 の 1 つの行に対応します。

プロセス全体が同じスレッドで実行されます。なぜこれがとても遅いのか考えてみませんか?どんなアドバイスでも大歓迎です!

4

0 に答える 0