C # Datagridview Casella evento Controllato - più righe?
-
21-08-2019 - |
Domanda
Ho un datagridview con più colonne e righe. La prima colonna contiene una casella di controllo. Voglio che l'utente sia in grado di selezionare più caselle di controllo e quindi eseguire un'azione. Ad esempio se selezionano caselle delle righe 1 e 2, i dati di altre colonne nelle righe 1 e 2 possono essere selezionati e passare in un messagebox.
Lo so ho bisogno di utilizzare l'evento checkbox_changed per fare questo. Tuttavia sto avendo problemi a lavorare fuori come fare questo per più righe?
Soluzione
Il pulsante Click fare:
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");
}
Altri suggerimenti
Se si desidera che l'utente a cliccare su un pulsante per eseguire l'azione, allora quello che ti serve per gestire è l'evento Click del pulsante, non il CheckBox cambiato evento ... Quando il pulsante viene premuto, basta passare attraverso tutti righe del DataGridView e eseguire un'azione sulle righe con una casella di controllo controllato.
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");
}
Credo che non avete bisogno di qualsiasi evento Ho risolto questo problema da questo codice:
//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
la vostra uscita da questo parametro: ItemID -> 0 // Per valori non selezionati ItemID -> 1 // Per Valori Controllato
Ora è possibile filtrare le righe che restituiscono 1 come valore per la vostra azione Ho provato questo codice e il lavoro per me