0

複数の列がDataGridViewあり、すべての行は名前、ID などのいくつかのプロパティを持つオブジェクトを表します。変更後Name column Checkbox、オブジェクトを更新したい 列Checknoxの状態を取得するにはどうすればよいですか? これは私が試したことです:

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "Name")
    {

    }
}
4

2 に答える 2

2

Nameの名前だと思いますDataGridViewCheckBoxColumn

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "Name")
    {
        var isChecked = dataGridView1[e.ColumnIndex, e.RowIndex].Value as bool? ?? false;
        //rest of logic
    }
}

これが最も簡単で安全な方法です。

行内のすべてのセルを反復処理するには、次のコードを使用します。

DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
foreach (DataGridViewCell cell in row.Cells)
{
   object value = cell.Value;
}
于 2013-10-18T10:27:51.563 に答える
0

を使用しFindControl()て、チェックボックスの状態を取得できます。

CheckBox cbName = (CheckBox)dataGridView1.Columns[e.ColumnIndex].FindControl("cbName");
checkState = cbName.CheckState.toString();

また

isChecked = cbName.Checked;
于 2013-10-18T10:34:04.513 に答える