1. ホーム
  2. c#

[解決済み] DataGridView.Clear()

2022-02-28 02:54:27

質問

ここで問題が発生しました。 datagridviewからすべての行を削除したいです。 これは私が行を追加する方法です。

private void ReadCompleteCallback(object clientHandle, Opc.Da.ItemValueResult[]     results)
{
    foreach (Opc.Da.ItemValueResult readResult in results)
    {
        dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(readResult.ItemName, readResult.Quality, readResult.Timestamp,readResult.Value)));        
    }
}                              

そして、これがグリッドビューをクリアする方法です。

private void treeView1_SelectionsChanged(object sender, EventArgs e)
{
    dataGridView1.Rows.Clear();
    items = new Opc.Da.Item[treeView1.SelectedNodes.Count]; 
    foreach (TreeNode x in treeView1.SelectedNodes) {
        items[treeView1.SelectedNodes.IndexOf(x)] = new Opc.Da.Item();
        items[treeView1.SelectedNodes.IndexOf(x)].ItemName = x.Text; 
    }

    group.AddItems(items);
    group.Read(group.Items, 123, new Opc.Da.ReadCompleteEventHandler(ReadCompleteCallback), out req);
}

デバッグでは、dataGridVIew1.Rows.Count=0と表示されていますが、フォーム上ではグリッドはクリアになりません。 ツリーで選択するたびに、テーブルの新しい行を見たいのです。

どうすればいいですか?

データグリッドをリフレッシュすればいいんだろうけど。これを試してみてください。

dataGridView1.Rows.Clear();
dataGridView1.Refresh();

もしこれがうまくいったら...アプリケーションのこの部分を考え直したほうがいいかもしれません。