|
分類:[C#]
DataGridView に乱数を表示させようとしているのですが、何回クリックしても最初画面表示されたままです。DataGridView をフォームデザイナーで貼り付けたときは正常に動きます。
なぜ動的に生成した DataGridView ではまずいのでしょうか?
private void btnTable_Click(object sender, EventArgs e)
{
const int N = 10000;
const int M = 5;
double[,] A = new double[N, M];
var Rand = new Random();
var DataGrid = new DataGridView();
var table = new DataTable();
DataGrid.Parent = splitContainer1.Panel2;
DataGrid.Dock = DockStyle.Fill;
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
A[i, j] = (double)Rand.Next(1, 20);
// DataGridViewのデータをクリア
DataGrid.DataSource = null;
DataGrid.Rows.Clear();
DataGrid.Columns.Clear();
//コラムヘッダー
for (int j = 0; j < M; j++)
table.Columns.Add("num" + j.ToString());
// 行データの追加
DataGrid.SuspendLayout(); // Layoutの実行を保留する
for (int i = 0; i < N; i++)
{
var dr = table.NewRow();
for (int j = 0; j < M; j++)
dr[j] = A[i, j];
table.Rows.Add(dr);
}
DataGrid.DataSource = table; // DataTableをDataGridViewにバインド
DataGrid.ResumeLayout(); // 保留中のLayoutを再開する
//Refresh() してもダメ!
DataGrid.Refresh();
}
|