我有一個datagridview多列和行。 第一列包含一個複選框。 我希望用戶能夠選擇多個複選框,然後執行操作。 例如,如果他們選擇第1行和第2行中的複選框,則可以選擇第1行和第2行中其他列的數據並將其傳遞到消息框中。C#Datagridview複選框選中事件 - 多行?
我知道我需要使用checkbox_changed事件來做到這一點。然而,我有困難解決如何做到這一點多行?
我有一個datagridview多列和行。 第一列包含一個複選框。 我希望用戶能夠選擇多個複選框,然後執行操作。 例如,如果他們選擇第1行和第2行中的複選框,則可以選擇第1行和第2行中其他列的數據並將其傳遞到消息框中。C#Datagridview複選框選中事件 - 多行?
我知道我需要使用checkbox_changed事件來做到這一點。然而,我有困難解決如何做到這一點多行?
在按鈕的Click事件做:
static int SelectColumnIndex = 0;
PerformAction_Click(object sender, System.EventArgs e)
{
string data = string.Empty;
foreach(DataGridViewRow row in MyDataGridView.Rows)
{
if(row.Cells[SelectColumnIndex].Value!=null &&
Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)
{
foreach(DataGridViewCell cell in row.Cells)
{
if(cell.OwningColumn.Index!= SelectColumnIndex)
{
data+= (cell.Value + " ") ; // do some thing
}
}
data+="\n";
}
}
MessageBox.Show(data, "Data");
}
如果您希望用戶點擊一個按鈕來執行該操作,那麼您需要處理的是按鈕的Click事件,而不是CheckBox Changed事件......單擊該按鈕時,只需通過您的DataGridView的所有行,並使用複選框在行上執行操作。
static int SelectColumnIndex = 0;
PerformAction_Click(object sender, System.EventArgs e)
{
string data = string.Empty;
foreach(DataGridViewRow row in MyDataGridView.Rows)
{
if(row.Cells[SelectColumnIndex].Value != null
&&
Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)
{
foreach(DataGridViewCell cell in row.Cells)
{
if (cell.OwningColumn.Index != SelectColumnIndex)
{
data+= (cell.Value + " ") ; // do some thing
}
}
data+="\n";
}
}
MessageBox.Show(data, "Data");
}
我認爲你不需要任何事件 我解決了這個問題,通過這個代碼:
//In Fill DataGridViewEvent :
DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxColumn();
ChCol.Name = "CheckedRow";
ChCol.HeaderText = "انتخاب";
ChCol.Width = 50;
ChCol.TrueValue = "1";
ChCol.FalseValue = "0";
dg.Columns.Insert(0, ChCol);
// In Button Event put these codes:
try
{
MessageBox.Show(row.Cells[2].Value.ToString() + " --> " +
row.Cells["CheckedRow"].Value.ToString());
}
catch
{
// Nothing Act
}
enter code here
你的輸出通過此參數: ItemID - > 0 //對於未選中的值 ItemID - > 1 //對於選中的值
現在可以篩選返回1的值,爲您的操作 我測試此代碼行和它爲我
工作