7

これがシナリオです。

checkbox(Name:"Check All" ID:chkItems)とdatagridview. このチェックボックスをクリックすると、上のすべてのチェックボックスdatagridviewもチェックされます。

グリッドにチェックボックス列も追加しました。

DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn();
CheckBox chk = new CheckBox();
CheckboxColumn.Width = 20;
GridView1.Columns.Add(CheckboxColumn);

チェックボックスの背後にあるコードは次のとおりです。に問題がありますrow.Cell

private void chkItems_CheckedChanged(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in GridView1.Rows)
    {
        DataGridViewCheckBoxCell chk = e.row.Cells(0);
        if (chk.Selected == false)
        {
            row.Cells(0).Value = true;
        }
    }
}   
4

7 に答える 7

16
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell) row.Cells[0];

それ以外の

DataGridViewCheckBoxCell chk = e.row.Cell(0);

*編集: *あなたは本当にこれをやりたいと思います:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
       DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell) row.Cells[0];
       chk.Value = !(chk.Value == null ? false : (bool) chk.Value); //because chk.Value is initialy null
}
于 2012-11-06T01:00:34.937 に答える
3
    private void setCheckBoxInDataGrid(DataGridView dgv, int pos, bool isChecked)
    {
        for (int i = 0; i < dgv.RowCount; i++)
        {
            dgv.Rows[i].DataGridView[pos, i].Value = isChecked;
        }
    }

これが私がやった方法です

于 2016-09-29T03:40:39.123 に答える
0

独自にデフォルト状態を提供しても問題ない場合、checkboxes of datagridviewつまり True または False [null 状態を割り当てないでください] 状態 (これを行う理由は後者で説明されます)。

これは、次のコードで実行できます ( で表示する結果を検索するときにこのコードを入力しますDataGridView)
dgvは、使用している のオブジェクトですDataGridView

for (int i = 0; i < dgv.RowCount - 1; i++)
{
     dgv.Rows[i].DataGridView[0, i].Value = true;
}

ここでDataGridView[0, i]、0 番目の列、i 番目
の行を示します。これを行う理由は、ロード時にチェックボックスがデフォルトでオンになっているためですnull。コードはnull状態を比較していません (オブジェクト null 参照例外の作成)。したがって、一度 u が false または true のいずれかの状態を割り当てるとします。状態になることはありませんnull
チェックに使用する button_click_event 内に次のコードを入力します。

for (int i = 0; i < dgv.RowCount-1; i++)
{
    if (dgv.Rows[i].Cells[0].Value.ToString() != "")
    {
        dgv.Rows[i].Cells[0].Value = false;
    }
    else
    {
        dgv.Rows[i].Cells[0].Value = true;
    }
}

それは私のために働いた、私はそれがあなたのために働くことを願っています.

于 2013-02-28T10:03:15.153 に答える
0

すべてのチェックボックスを選択するか、相互性を選択して値を計算しようとしました...このコードはおそらく役立つでしょう。

foreach (DataGridViewRow item in DGDoc.Rows)
{
    if (item.Cells[0].Value == null)
        item.Cells[0].Value = "True";
    if (bool.Parse(item.Cells[0].Value.ToString()))
    {
        item.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(241, 215, 215);
        strIDs += "," + item.Cells[1].Value.ToString();
        intSumPrice += Int64.Parse(item.Cells[4].Value.ToString());
        intSumTax += Int64.Parse(item.Cells[5].Value.ToString());
        intSumPay += Int64.Parse(item.Cells[6].Value.ToString());
    }
    else
    {
        item.DefaultCellStyle.BackColor = System.Drawing.Color.Empty;
    }
}
DGDoc.EndEdit();
于 2015-12-11T21:41:35.953 に答える