私は現在このコードを使用しています:
foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
{
dataGridView1.Rows.RemoveAt(item.Index);
}
最初の列にチェックマークが付いていますが、このコードでは選択されたものしか取得できません。選択したチェックボックスを行で削除するだけにするにはどうすればよいですか?
私は現在このコードを使用しています:
foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
{
dataGridView1.Rows.RemoveAt(item.Index);
}
最初の列にチェックマークが付いていますが、このコードでは選択されたものしか取得できません。選択したチェックボックスを行で削除するだけにするにはどうすればよいですか?
あなたは次のようなものが欲しい
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (Convert.ToBoolean(dataGridView1.Rows[i]
.Cells[yourCheckBoxColIndex].Value) == true)
{
dataGridView1.Rows.RemoveAt(i);
}
}
これが役立つことを願っています。
このようなものかもしれません...これはリストビューの例ですが、概念はほとんどそこにあります。アイテムをループしてチェックボックス 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)
{
}
}
}
}
次のようなことを試してください:
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);
}
これを試して:
if (dgv.SelectedRows.Count>0)
{
dgv.Rows.RemoveAt(dgv.CurrentRow.Index);
}