DataGridViewCheckBoxCell wie um zu zeigen, überprüft, wenn während der form-Last
Ich habe eine DataGridView, die lädt die Daten aus einer DataTable, zusammen mit einer ungebundenen Spalte DataGridViewCheckBoxCells. Die Zeilen im DataGridView sind, verglichen mit einer separaten Datentabelle mit Werten, die der Benutzer gespeichert hat, und wenn es eine übereinstimmung gibt, wird das Kontrollkästchen für die Zeile prüfen soll.
Hier ist der code, vergleicht die Werte und setzt die checkbox Wert auf 'true':
foreach (int j in selectedObjectives)
{
foreach (DataGridViewRow r in dgvObjectives.Rows)
{
if (j == Convert.ToInt32(r.Cells["ObjectiveID"].Value))
{
dgvObjectives.CurrentCell = r.Cells["Select"];
((DataGridViewCheckBoxCell)r.Cells["Select"]).Value = true;
//dgvObjectives.InvalidateCell(r.Cells["Select"]);
//dgvObjectives.EndEdit();
//dgvObjectives.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
if (Convert.ToInt32(r.Cells["ObjectiveID"].Value) == selectedIndex)
{
r.Selected = true;
}
}
}
Wenn ich die Methode aufrufen, um diese Aktion durchzuführen, während der form-Last private void WQMDrill_Load(object sender, EventArgs e)
, die Werte sind richtig eingestellt, aber das Kontrollkästchen nicht aktivieren. Allerdings, wenn Sie aufgerufen, nachdem das Formular fertig geladen ist, der code funktioniert perfekt. Leider für mich, ich brauche unbedingt für diese zu prüfen, die während des Ladeprozesses.
Ich hoffe, ich war klar mit meinem Problem, jede Hilfe in dieser Angelegenheit würde sehr geschätzt werden. Wie Sie sehen können, habe ich versucht zu entkräften, die Zelle allein, sowie das gesamte DataGridView-Steuerelement. Ich habe auch
private void dgvObjectives_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (this.dgvObjectives.CurrentCell.ColumnIndex == 0)
{
this.dgvObjectives.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
Nicht, dass das Feuer während dieser Zeit. Danke.
- Der erste Schnipsel zur Verfügung gestellt - ist, dass genau der code, genannt in der form
Load
Veranstaltung? Haben Sie ging durch Sie zu versichern, die Werte sind immer korrekt gesetzt beim laden? - Die form ist
Load
Ereignis ruft die Methode auf, in dem dieser code befindet. Ich trat schon durch den code, und der Wert der checkbox gesetzt ist richtig, aber die Checkboxen nicht auf sich selbst geprüft. Allerdings ist auch diese Methode wird aufgerufen, wenn der Benutzer prüft die box manuell ein und es funktioniert tadellos.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Ihre checkbox-Auswahl-und update-Logik in der DataBindingComplete-Event-Handler, dieser feuert nach dem FormLoad aber bevor Sie alles, was dem Benutzer angezeigt wird.
((DataGridViewCheckBoxCell)r.Cells["Select"]).Value = true;
Vielleicht die Zeile, die Sie waren auf der Suche war, wo ich die ausgewählte Zeile als wahr. Ich werde versuchen, Ihren Vorschlag mit der DataBindingComplete. Danke.Ich bin nicht sicher, dass der Aufruf
CommitEdit
tatsächlich Feuer derPaint
auf die Zelle. Versuchen Sie die Handhabung derCellMouseUp
Ereignis und feuernEndEdit
wenn die Spalte eine checkbox-Spalte.Ich hatte das gleiche problem, und habe versucht, eine Menge verschiedener Möglichkeiten, damit umzugehen, die meisten scheitern, außer, wenn ich versuchte
this.BeginInvoke(new CDelegate())
.