myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Wie kann ich eine Checkbox in Cell eines DataGridViews anzeigen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich eine Checkbox in Cell eines DataGridViews anzeigen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Christel Christel ist weiblich
myCSharp.de-Mitglied

avatar-1299.gif


Dabei seit: 09.07.2007
Beiträge: 448
Entwicklungsumgebung: Visual Studio .NET


Christel ist offline

Wie kann ich eine Checkbox in Cell eines DataGridViews anzeigen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallöchen,
ich habe ein DataGridView erstellt, welches ich aus einer DataTable fülle. Abhängig vom Datentyp des Parameter-Objektes pro Row soll in der Spalte "Value" eine Checkbox erscheinen.

C#-Code:
                SafetyParameterTable = new DataTable();
                SafetyParameterTable.Columns.Add("ID");
                SafetyParameterTable.Columns.Add("Name");
                SafetyParameterTable.Columns.Add("Group");
                SafetyParameterTable.Columns.Add("Value", typeof(Object));
                SafetyParameterTable.Columns.Add("Unit");
                SafetyParameterTable.Columns.Add("Comment");
                SafetyParameterTable.Columns.Add("Parameter", typeof(SafetyParameter));

                dgvSafetyParameter.DataSource = SafetyParameterTable;

                foreach (SafetyParameter param in SafetyParameterList)
                {
                    SafetyParameterTable.Rows.Add(new object[] { param.ID, param.Name, param.Group, null, param.Unit, param.Comment, param });
                }

                foreach (DataGridViewRow row in dgvSafetyParameter.Rows)
                {
                    SafetyParameter param = row.Cells["Parameter"].Value as SafetyParameter;

                    if (param != null)
                    {
                        if (param.DataType == typeof(Boolean))
                        {
                            DataGridViewCheckBoxCell checkBoxCell = new DataGridViewCheckBoxCell();
                            checkBoxCell.TrueValue = param.True;
                            checkBoxCell.FalseValue = param.False;
                            row.Cells["Value"] = checkBoxCell;

                            row.Cells["Value"].Value = param.Value;
                            dgvSafetyParameter.InvalidateCell(row.Cells["Value"]);
                        }
                    }
                }

Leider erscheinen in den entsprechenden Zellen keine Checkboxen.

Was mache ich falsch?

Danke
Christel
29.09.2020 12:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.513
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hast du schon mal nach dem Problem gesucht? Bei mir ist das erste Ergebnis: Adding Different DataGridView Cell Types to a Column
29.09.2020 15:20 Beiträge des Benutzers | zu Buddylist hinzufügen
Christel Christel ist weiblich
myCSharp.de-Mitglied

avatar-1299.gif


Dabei seit: 09.07.2007
Beiträge: 448
Entwicklungsumgebung: Visual Studio .NET

Themenstarter Thema begonnen von Christel

Christel ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ja, habe ich ausführlich. Und nein, ich habe keinen hilfreichen Beitrag gefunden.
Ich poste hier übrigens immer nur, nachdem ich vorher gesucht habe.

Gruß Christel
29.09.2020 15:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.513
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sehr gut :) Aber dann ist die Frage, was du anders machst als in den Beispielen.

Daß jemand hier so etwas schon einmal umgesetzt hat, ist ziemlich unwahrscheinlich. Da mußt du schon ein paar Zeilen zu deinem Problem und deiner Lösung schreiben, damit man das als Außenstehender nachvollziehen kann.
29.09.2020 15:29 Beiträge des Benutzers | zu Buddylist hinzufügen
Christel Christel ist weiblich
myCSharp.de-Mitglied

avatar-1299.gif


Dabei seit: 09.07.2007
Beiträge: 448
Entwicklungsumgebung: Visual Studio .NET

Themenstarter Thema begonnen von Christel

Christel ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe die Beispiele umgesetzt, die ich gefunden habe. Siehe mein Code Snippet. Das ist die angestreblte Lösung.

Das Problem ist, dass sich der Typ der Zellen nicht ändert. Mehr kann ich nicht beschreiben. Der Code lässt sich übersetzen und läuft und wirft keine Exception, aber ich bekomme keine Checkbox angezeigt.

Trotzdem danke. Ich werde wohl eine alternative Implementation wählen.
29.09.2020 15:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Platoon Platoon ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.02.2017
Beiträge: 25
Entwicklungsumgebung: VS 2015 Pro (Arbeit), VS 2017
Herkunft: NRW


Platoon ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das alles kompiliert wird ist kein Garant dafür, dass es auch funktioniert :-).

Hast du mal Breakpoints gesetzt und geschaut ob deine Abfrage

C#-Code:
       if (param != null)
                    {
                        if (param.DataType == typeof(Boolean))
                        {
                            DataGridViewCheckBoxCell checkBoxCell = new DataGridViewCheckBoxCell();
                            checkBoxCell.TrueValue = param.True;
                            checkBoxCell.FalseValue = param.False;
                            row.Cells["Value"] = checkBoxCell;

                            row.Cells["Value"].Value = param.Value;
                            dgvSafetyParameter.InvalidateCell(row.Cells["Value"]);
                        }
                    }

durchläuft oder ob er die überspringt weil die Bedingung nicht erfüllt ist?

Denn ohne zu wissen ob dein "param" tatsächlich ein boolscher Wert ist, kann keiner sagen ob das ok ist oder nicht.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Platoon am 29.09.2020 20:53.

29.09.2020 20:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Christel Christel ist weiblich
myCSharp.de-Mitglied

avatar-1299.gif


Dabei seit: 09.07.2007
Beiträge: 448
Entwicklungsumgebung: Visual Studio .NET

Themenstarter Thema begonnen von Christel

Christel ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ja natürlich habe ich debuggt und ja, die Bedingung wird erfüllt und der Code wird durchlaufen. Das einzige was fehlt, ist die Anzeige der Zelle als Checkbox.

Danke
Christel

PS: Ich finde es traurig, dass man hier neuerdings so behandelt wird, als wäre man blutiger Anfänger und würde unsinnige Fragen stellen, ohne vorher selber recherchiert und die nötigsten Schritte bei der Fehlersuche durchgeführt haben. Ich kenne es so nicht von hier, schreibe hier seit mittlerweile über 13 Jahren (und entwickle seit 32 Jahren Software) und habe bisher immer konstruktive Hilfe bekommen.
Schade.
30.09.2020 09:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.280
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das Problem ist ja, wie MrSparkle geschrieben hat, dass es sehr schwer ist mit den wenigen Details, die Du preisgibst, etwas als Außensteher anfangen bzw. die Sache nachvollziehen kann.
Dass dann die Leute Fragen nach einfachen Dingen stellen drückt damit also eher ein Interesse aus Dir zu helfen, statt Dich irgendwie als Anfänger hinzustellen.

Keiner hier antwortet, dass er Dich runtermachen kann.
30.09.2020 10:00 Beiträge des Benutzers | zu Buddylist hinzufügen
witte
myCSharp.de-Mitglied

Dabei seit: 03.09.2010
Beiträge: 920


witte ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

.. als workaround könnte man zwei Spalten machen eine Standard und eine für Checkboxen und dann die nicht benötigte unsichtbar machen (wenn das überhaupt geht)
30.09.2020 11:10 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Christel Christel ist weiblich
myCSharp.de-Mitglied

avatar-1299.gif


Dabei seit: 09.07.2007
Beiträge: 448
Entwicklungsumgebung: Visual Studio .NET

Themenstarter Thema begonnen von Christel

Christel ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die Zellen sollen in manchen Zeilen als Checkbox erscheinen, in anderen als Texzbox, zukünftig evtl. auch als Combobox. Die Lösung passt daher nicht. Aber trotzdem danke.
30.09.2020 11:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
FZelle
myCSharp.de-Poweruser/ Experte

Dabei seit: 23.04.2004
Beiträge: 9.858


FZelle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

30.09.2020 18:09 Beiträge des Benutzers | zu Buddylist hinzufügen
Platoon Platoon ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.02.2017
Beiträge: 25
Entwicklungsumgebung: VS 2015 Pro (Arbeit), VS 2017
Herkunft: NRW


Platoon ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

[offtopic]
Auch wenn das für dich jetzt ggf. nicht wirklich Konstruktiv ist - aber warum nutzt du nicht WPF?

Das ist in der Hinsicht deutlich einfacher zu handeln - bedeutet allerdings Einarbeitung und viel Durchhaltevermögen weil einiges auf Anhieb sehr gewöhnungsbedürftig ist.

Aber du bist deutlich flexibler......
[/offtopic]
30.09.2020 20:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 24.10.2020 17:01