Benutzer mit den meisten Antworten
DataGridView Default Error Dialog - handle the DataError event - Wie und wo?

Frage
-
http://www1.minpic.de/bild_anzeigen.php?id=139915&key=63724247
Hallo,
ich bekomme teils die Meldung. Nicht immer!!! Meist klappt es.
Was kann ich dagegen tun? Wir von einem anderen Thread aufgerufen. Evtl. ist das das Problem?!?
Grüße Andreas
---------------------------
DataGridView Default Error Dialog
---------------------------
The following exception occurred in the DataGridView:System.InvalidOperationException: BindingSource cannot be its own data source. Do not setthe DataSource and DataMember properties to values that refer back to BindingSource. at System.Windows.Forms.BindingSource.get_Count() at
System.Windows.Forms.CurrencyManager.get_Item(Int32 index) at System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetError(Int32
rowIndex)To replace this default dialog please handle the DataError event.
---------------------------
OK
---------------------------drv.BeginEdit(); drv["Quantity"] = newCount; drv.EndEdit(); if (newCount <= 0) { drv.Delete(); // ** Zeile selektieren BS.Position = dGVMaterial.Rows.Count; if (dGVMaterial.Rows.Count > 1) dGVMaterial.Rows[dGVMaterial.Rows.Count - 2].Selected = true; } for (int i = 0; i < dGVMaterial.Rows.Count; i++) { if (i == 0) dGVMaterial.Rows[i].DefaultCellStyle.BackColor = Color.Yellow; else if (i != BS.Position) dGVMaterial.Rows[i].DefaultCellStyle.BackColor = Color.White; } DataRowView row = (DataRowView)BS.Current; Int32 counterActual = GetSumPanels();
Antworten
-
Hallo Andreas,
- > Wird von einem anderen Thread aufgerufen. Evtl. ist das das Problem?!?
ja, normal liegt es in Deinem Szenario an dem Nicht-UI-Thread.
Häufige Lösung - wie ja sicher bekannt - über Invoke arbeiten: [Thread1] [Thread2] [Thread3]
oder ggf. mit einer threadsicheren BindingList<T> z.B. über SynchronizationContext arbeiten:[multithreading - How do you correctly update a databound datagridview from a background thread - Stack Overflow]
http://stackoverflow.com/questions/455766/how-do-you-correctly-update-a-databound-datagridview-from-a-background-thread
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 8. März 2011 15:06
Alle Antworten
-
Hallo Andreas,
- > Wird von einem anderen Thread aufgerufen. Evtl. ist das das Problem?!?
ja, normal liegt es in Deinem Szenario an dem Nicht-UI-Thread.
Häufige Lösung - wie ja sicher bekannt - über Invoke arbeiten: [Thread1] [Thread2] [Thread3]
oder ggf. mit einer threadsicheren BindingList<T> z.B. über SynchronizationContext arbeiten:[multithreading - How do you correctly update a databound datagridview from a background thread - Stack Overflow]
http://stackoverflow.com/questions/455766/how-do-you-correctly-update-a-databound-datagridview-from-a-background-thread
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 8. März 2011 15:06
-
Häufige Lösung - wie ja sicher bekannt - über Invoke arbeiten: [Thread1] [Thread2] [Thread3]
oder ggf. mit einer threadsicheren BindingList<T> z.B. über SynchronizationContext arbeiten:
Hallo Frank,
ja.
Die Invoke kann ich ja
txtInfo.Invoke(new Action<string>(s=>{txtInfo.Text = s;}), "meine Info");
so nicht anwenden.public void ListToProduce()
DataGridView
Items
1
2
n
Jetzt wird bei jedem Produkt heruntergezählt, der Event kommt von Client, zum Server, der zählt runter, aktualisiert das UI.
Wie kann ich jetzt das Invoke in die ListToProduce adaptieren?
txtInfo.Invoke(new Action<string>(s=>{txtInfo.Text = s;}), "meine Info");
So geht es ja nicht.
dgView.Invoke(new Action<string>(s=>{dgView.Text = s;}), "meine Info");
Grüße Andreas
- Bearbeitet Robert BreitenhoferModerator Montag, 7. März 2011 09:36 Formatierung