4

私は現在このコードを使用しています:

foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
{
    dataGridView1.Rows.RemoveAt(item.Index);
}

最初の列にチェックマークが付いていますが、このコードでは選択されたものしか取得できません。選択したチェックボックスを行で削除するだけにするにはどうすればよいですか?

4

5 に答える 5

6

あなたは次のようなものが欲しい

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    if (Convert.ToBoolean(dataGridView1.Rows[i]
                          .Cells[yourCheckBoxColIndex].Value) == true)
    {
        dataGridView1.Rows.RemoveAt(i); 
    }
}

これが役立つことを願っています。

于 2012-07-04T08:04:03.683 に答える
1

このようなものかもしれません...これはリストビューの例ですが、概念はほとんどそこにあります。アイテムをループしてチェックボックス ID を見つけ、選択したものを削除します。お役に立てれば。

public void btnDeleteClick(object sender, EventArgs e)
    {
        // Iterate through the ListViewItem
        foreach (ListViewItem row in ListView1.Items)
        {
            // Access the CheckBox
            CheckBox cb = (CheckBox)row.FindControl("cbxID");
            if (cb != null && cb.Checked)
            {
                // ListView1.DataKeys[item.DisplayIndex].Values[0].ToString()
                try
                {

                }
                catch (Exception err)
                {

                }
            }
        }
    }
于 2012-07-04T08:02:30.397 に答える
1

次のようなことを試してください:

foreach(DataGridViewRow row in this.dataGridView1.Rows)
{
    var checked = Convert.ToBoolean(row.Cells[0].Value); // Assuming the first column contains the Checkbox
    if(checked)
        dataGridView1.Rows.RemoveAt(row.Index);
}
于 2012-07-04T07:58:56.807 に答える
0

これを試して:

if (dgv.SelectedRows.Count>0)
        {
            dgv.Rows.RemoveAt(dgv.CurrentRow.Index);
        }
于 2014-10-08T13:46:37.453 に答える