アプリケーションの起動時にDataGridViewがチェックボックスの変更を表示しない

チェックボックス列を作成し、最初の列としてメインデータグリッドに挿入し、次に行をループしてチェックボックスをオンにするコードを作成します。基本的に、私がやろうとしているのは、アプリケーションの起動時にデフォルトでチェックされるチェックボックスを追加することです。

問題は、アプリケーションの起動時にチェックボックスが変更されないことです。それが効力を発揮するかどうかを確認するために、下にツールチップのテキストを追加しましたが、運は悪くありません。

以下に同じコードをトリガーするイベント(同じメソッドを呼び出す)を追加しました。チェックマークが付いたグリッドが更新されます。

DataGridViewCheckBoxColumn importSelectionColumn = new DataGridViewCheckBoxColumn();
importSelectionColumn.Name = "dataSelection";
importSelectionColumn.DisplayIndex = 0;
importSelectionColumn.HeaderText = "\u2611";
importSelectionColumn.Width = 35;
importSelectionColumn.Visible = true;
importSelectionColumn.FalseValue = false;
importSelectionColumn.TrueValue = true;
importSelectionColumn.HeaderCell.Style.Font = new Font(FontFamily.GenericSansSerif, 16f);

// Add column to grid:
mainDataGrid.Columns.Insert(0, importSelectionColumn);

// Set checkbox to true for all rows:
foreach (DataGridViewRow row in this.mainDataGrid.Rows)
{
    row.Cells["dataSelection"].Value = true;

   //Adding this just to see whether it's set when application starts.
    row.Cells["dataSelection"].ToolTipText = "Testing";
}

mainDataGrid.RefreshEdit();
mainDataGrid.Refresh();
0
はい、クリックするとプロセスが非同期的に起動するボタンがあります。そしてそれはグリッドを効果的に更新し、各行はプロセスが完了するたびに更新されます。
追加された 著者 Rudy M,
はい、クリックするとプロセスが非同期的に起動するボタンがあります。そしてそれはグリッドを効果的に更新し、各行はプロセスが完了するたびに更新されます。
追加された 著者 Rudy M,
このコードを実行した後に mainDataGrid に影響を与えるイベントはありますか?
追加された 著者 Jeric Cruz,
私たちがそれをチェックできるようにあなたもそれを投稿してもらえますか。
追加された 著者 Jeric Cruz,
私たちがそれをチェックできるようにあなたもそれを投稿してもらえますか。
追加された 著者 Jeric Cruz,

4 答え

状態を変更するコードがあまりにも早く実行されていないことを確認してください。 コンテナフォームのLoadedイベントの後、すべてのコントロールがロードされて作業の準備ができたときに実行する必要があります。

1
追加された
私もそう考えていましたが、Program.csの Application.Run(mainForm); を使用してアプリケーションを実行した後、同じメソッドをもう一度実行しようとしました。
追加された 著者 Rudy M,
これは、フォームにloadイベントを追加して、ここからチェックをすることです。ありがとうございます。
追加された 著者 Rudy M,

状態を変更するコードがあまりにも早く実行されていないことを確認してください。 コンテナフォームのLoadedイベントの後、すべてのコントロールがロードされて作業の準備ができたときに実行する必要があります。

1
追加された
私もそう考えていましたが、Program.csの Application.Run(mainForm); を使用してアプリケーションを実行した後、同じメソッドをもう一度実行しようとしました。
追加された 著者 Rudy M,
これは、フォームにloadイベントを追加して、ここからチェックをすることです。ありがとうございます。
追加された 著者 Rudy M,

mainDataGrid にチェックボックスコントロールを追加することは、ページロードイベントの代わりに DataBound イベントで行うことができます。

あなたのページで以下のコードを使用して確認してください。

protected void mainDataGrid_DataBound(object sender, EventArgs e)
{
    foreach (GridViewRow objRow in mainDataGrid.Rows)
    {
        TableCell tcCheckCell = new TableCell();
        CheckBox chkCheckBox = new CheckBox();
        tcCheckCell.Controls.Add(chkCheckBox);
        objRow.Cells.AddAt(0, tcCheckCell);
    }
}
0
追加された

mainDataGrid にチェックボックスコントロールを追加することは、ページロードイベントの代わりに DataBound イベントで行うことができます。

あなたのページで以下のコードを使用して確認してください。

protected void mainDataGrid_DataBound(object sender, EventArgs e)
{
    foreach (GridViewRow objRow in mainDataGrid.Rows)
    {
        TableCell tcCheckCell = new TableCell();
        CheckBox chkCheckBox = new CheckBox();
        tcCheckCell.Controls.Add(chkCheckBox);
        objRow.Cells.AddAt(0, tcCheckCell);
    }
}
0
追加された