Ich möchte mit einem Radio Button vom Bediener eine ja nein Antwort. diese Antwort soll anschließend in einer Tabelle angezeigt werden (nachdem ein button zur Bestätigung gedrückt wird). wie gehe ich vor? Ausgangszustand: Tabelle erstellt, button und Radio Buttons erstellt. wie kann ich die info per button in die Tabelle schreiben?
ich habe vor, das ganze mittels einer globalen Variablé, deren Wert durch den Button verändert wird, zu realisieren und die Abfrage mittels eines Events zu steuern. Mit welcher Methode kann ich den wert der Radio Buttons in die Tabelle schreiben?
niemand? müsste ja eign soetwas sein wie if radio box x == true dann setze feld gleich string bla bla und das feld setzen eben über globale variable und event
was mir noch fehlt: wie kann ich ein ganz bestimmtes Feld ausfüllen lassen?
Warum fuellst du dann nicht einfach das ganz bestimmte Feld? Weisst du nicht wie man ein Feld fuellt? Ist es vielleicht doch nicht so ganz bestimmt?
key schrieb: > https://docs.microsoft.com/de-de/dotnet/framework/winforms/controls/change-displayed-data-at-run-time-wf-datagrid-control Hilft mir auch nicht weiter
key schrieb: > cppbert schrieb: >> Weisst du nicht wie man ein Feld fuellt? > > ja das ist mein Problem Und was fuer ein Feld ist das? Ein Edit oder Labelfeld? Mehr Details bitte - es gibt tausend Dinge in der Programmiersprache die du verwendest die Felder sind und auch x varianten von Tabellen - keine Ahnung was du genau machst
cppbert schrieb: > key schrieb: >> cppbert schrieb: >>> Weisst du nicht wie man ein Feld fuellt? >> >> ja das ist mein Problem > > Und was fuer ein Feld ist das? Ein Edit oder Labelfeld? > > Mehr Details bitte - es gibt tausend Dinge in der Programmiersprache > die du verwendest die Felder sind und auch x varianten von Tabellen - > keine Ahnung was du genau machst data grit view habe alle spalten auf read only gestellt, d.h. es geht darum, das der Bediener automatisiewrt Daten angezeigt bekommt.
ich möchte die Klasse DataGridViewTextBoxColumn verwenden
key schrieb: > ich möchte die Klasse DataGridViewTextBoxColumn verwenden das wahrscheinlkich schwachsinn, weil ich ja keine Daten einlesen möchte. Sondern nur asugeben
also ich bei recherhce gesehen, dass meist eine virtuelle Tabelle angelegt wird und damit die grit ausgefüllt wird. hilft mir aber nicht weiter
2 grundsätzliche Dinge. 1. ) Wieso machst du das so umständlich. Für eine JA / NEIN Abfrage in einer Tabelle reicht es, die Spalte der Tabelle mit einer Checked-Box (die mit den Haken) zu versehen. Das Ergebnis wird als True/False abgespeichert. Ist im Datagridview nur eine richtige Einstellung. 2.) wenn du es unbedingt so machen willst lege 2 Radio-Button an. Dann einfach beim Speichern die Checked-Eigenschaft abspeichern. if radio_button_ja.checked = true then schreibe_in_tabelle$ = "ja" else schreibe_in_tabelle$ = "nein" Alternativ : if radio_button_ja.checked = true then datagridview.rows(Zeilen_nr).celles(Zeilen_nr).value = "ja" else datagridview.rows(Zeilen_nr).celles(Zeilen_nr).value ="nein" end if Kleiner Hinweis am Rande. Wenn du 2 Radio-buttons mit JA Stellung has, must du die in eine Panel (Container) setzen, weil nur EIN Radio-Button nach den ersten Klick auf der Form die Checked = True Eigenschaft hat. Ein Container ist eine Mini-Form und muss auch so behandelt werden.
Sorry cells(Spalten_nr) natürlich : Also so ist der Code richtig Alternativ : if radio_button_ja.checked = true then datagridview.rows(Zeilen_nr).cells(spalten_nr).value = "ja" else datagridview.rows(Zeilen_nr).cells(spalten_nr).value ="nein" end if Ich bin die Vorblendung von Variablen gewöhnt, da kommt so was halt vor. ;)
Kleiner Nebenhinweis. Das Datagridview kannst du mit den richtigen Einstellungen so benutzen, das man es nicht einmal sieht. Die Anbindung an eine Datenbank ist in keinster Weise erforderlich. Der Unterschied ist nur die Eigenschaft "Datapropertyname" im Entwurf. Ist die leer ist das ein normales Gitter. Wenn sie ein Wert hat, muss dieser Wert der Name des Feldes sein, mit den du per Befehl das Datagridview füllst. Ich benutze das Datagridview sehr oft, als formatierte Anzeige. Du must nur ganz viele Standard-Eigenschaften verstellen. z.b. Header-text = false etc. Nun der Trick. Du musst die Farben auf den Hintergrund deiner Form anpassen. Farbe von select_row nicht vergessen, und read_only auf TRUE Gitterlinien abschalten, etc. Dann merkt kein Mensch das da ein Datagridview hinter steckt. Ist besonders geil, wenn du auf der Form z.B. eine Kalkulation anzeigen willst. Einfach die Felder per gitter_ini_sub füllen. Und dann beim der Berechnen_sub nur noch die Werte übergeben an die Zelle. Währungssymbole und Formatierung macht das Grid für dich. Und es passt auch perfekt im Design.
so dann? bekomme die Fehlermeldung Fehler CS1955 Der nicht aufrufbare Member "DataGridView.Rows" kann nicht wie eine Methode verwendet werden.
1 | grtArchivierung.Rows(1).cells(3).value = "Ja"; |
danke für die Tipps. hast du mal ein screenshot vom design? Schlaumaier schrieb: > Kleiner Nebenhinweis.
Ein Semikolon dahinter. ?? Dann muss du meine Befehle anpassen. Ich habe die Aussage getroffen, weil ich dachte du hast Visual-Basic. In C sind da einige Dinge etwas anders. Ein Screenshot wird dir wenig helfen. Der Trick ist ja, das du das Datagridview NICHT siehst. Aber ich vermute dein Fehler liegt in der Gitter_ini_sub. Die musst du schreiben mit folgenden VB !!! Befehlen und beim Start aufrufen. Ich rufe so was immer im Form-Load Ereignis auf. (Doppelklick in die nackte Form reicht). Sub gitter_ini_sub anzahl_der_zeilen = 24 ' oder was auch immer :) Datagridview.Rows.Add(anzahl_der_zeilen) end sub Bitte beachte das die linke obere Zeile die Adresse 0, 0 hat. Wenn das MS ist, dann drück die F1-Taste und such dann Datagridview und dann die DataGridViewCell.Value Eigenschaft . Dort ist der Unterschied in den Versionen (basic , c#, c++ u.s.w.) beschrieben
Hier ein Teil meine gitter_ini_sub sub gitter_ini_sub gg_summe.BackgroundColor = back_farbe gg_summe.Rows.Add(8) For i = 0 To 7 gg_summe.Rows(i).Height = 19 Next i gg_summe.ColumnHeadersVisible = False ' schalte überschrift ab gg_summe.CellBorderStyle = DataGridViewCellBorderStyle.None ' schaltet gitterlinen ab gg_summe.Rows(0).Cells(0).Value = "Listenpreis Abs. 1 :" gg_summe.Rows(1).Cells(0).Value = "+ TZ :" gg_summe.Rows(2).Cells(0).Value = "- Rabatte :" gg_summe.Rows(3).Height = 2 ' fette Trennlinie gg_summe.Rows(4).Cells(0).Value = "Endpreis ohne Mwst :" gg_summe.Rows(5).Cells(0).Value = "+ " + Str(akt_mwst) + "% Mwst :" gg_summe.Rows(6).Height = 2 ' fette Trennlinie gg_summe.Rows(7).Cells(0).Value = "Endpreis inkl. Mwst :" For i = 0 To 7 ' setze die summen_werte auf 0 gg_summe.Rows(i).Cells(1).Value = 0 gg_summe.Rows(i).Cells(4).Value = 0 Next i 'Skalierung des Gitters (ist so einfacher als mit den Eigenschaften ' diese Routine muss nach einen Neuskalieren in der form_resize_eigenschaft auch aufgerufen werden. maxi = gg_summe.Width / 100 gg_summe.Columns(0).Width = maxi * 27 gg_summe.Columns(1).Width = maxi * 15 gg_summe.Columns(2).Width = maxi * 18 gg_summe.Columns(3).Width = maxi * 25 gg_summe.Columns(4).Width = maxi * 15 For i = 0 To 4 ' setzt die fette Line schwarz If i <> 2 Then gg_summe.Rows(3).Cells(i).Style.BackColor = Color.Black gg_summe.Rows(6).Cells(i).Style.backColor = Color.Black gg_summe.Rows(3).Cells(i).value = "" gg_summe.Rows(6).Cells(i).value = "" End If Next i 'setzt die Standart-Eigenschaften der Farbe wegen Tarnung ;) gg_summe.Rows(0).Cells(3).Value = "Listenpreis Angebot :" gg_summe.DefaultCellStyle.ForeColor = Color.Black gg_summe.DefaultCellStyle.BackColor = back_farbe 'Color.Black Me.gg_summe.CurrentCell = Me.gg_summe(1, 0) gg_summe.DefaultCellStyle.SelectionBackColor = back_farbe So nun muss du das ganze nur noch in C umrechnen ;) Viel Spass
fein. Freut mich. Musst halt selbst ein bisschen denken. Aber du hast den richtigen Weg. Meine VB-Hilfe (MS-Hilfs-Assistent) zeigt mir die Code-Schnipsel der Funktion in 4 verschiedene Prg-Sprachen an. Mein größtes Problem ist nicht etwas zu coden. Sondern den Namen der Eigenschaft des Objekt der Funktion zu wissen. Deshalb hab ich dir den Code gezeigt. Ähnliche Ansteuerungen sind nämlich in C unter VB zu finden. Ich lese bei der Suche nach einer Funktion / Eigenschaft auch die VB.Net + C codes. War schon oft viel brauchbares drin. Die Details machen dich nur wahnsinnig. ;) Ich habe 4 Std. gestern an einer einfachen Sinus-Funktionsberechnung gesessen. Bis ich herausgefunden habe, das MS den Sinus in Radius nicht wie ich immer in GRAD rechnet. Da beißt du in die Tischkante
Schlaumaier schrieb: > Mein größtes Problem ist nicht etwas zu coden. Sondern den Namen der > Eigenschaft des Objekt der Funktion zu wissen. dein Problem ist auch mein Problem!!!!!!!!! haha. Coden ist einfach, eknn mich aber nicht mit c# oder Windows forms aus.
also wenn noch jemand was brauchbares für c# und Windows forms hat, immer her damit
es ist doch eine simple Frage: wie kann ich ein einzelnes Feld in einer data grit view ansprechen/ deren Wert verändern?
key schrieb: > es ist doch eine simple Frage: wie kann ich ein einzelnes Feld in einer > data grit view ansprechen/ deren Wert verändern? Suchbegriff in den Ms-Hilfs-Assistent (Aufruf mit F1-Taste): *DataGridView.Rows-Eigenschaft* Auszug aus der MS-Hilfe. Im folgenden Beispiel wird veranschaulicht, wie Zellwerte programmgesteuert geändert werden. [Visual Basic] ' Modify the value in the first cell of the second row. Me.dataGridView1.Rows[1].Cells[0].Value = "new value" ' The previous line is equivalent to the following line. Me.dataGridView1[0, 1].Value = "new value" [C#] // Modify the value in the first cell of the second row. this.dataGridView1.Rows[1].Cells[0].Value = "new value"; // The previous line is equivalent to the following line. this.dataGridView1[0, 1].Value = "new value"; me kann man sich aber sparen. This weiß ich nicht, da C#
Aber das geht nur, wenn du die Zeile vorher angelegt hast. !!!!! Schlaumaier schrieb: > anzahl_der_zeilen = 24 ' oder was auch immer :) > Datagridview.Rows.Add(anzahl_der_zeilen) da kannst du in Rows(x) x mit den Wert 0 - 23 hinterlegen.
eine Frage Dann doch noch: die erste Spalte zählt wohl garnicht als spalte. Ich date da wäre automatische die Zeilenzahl angeben. Wie kann ich das konfigurieren?
1 | this.grtArchivierung.Rows.Add(GlobaleVariablen.TestdurchlaufNr); |
habe so versucht, meiner Tabelle spalten hinzuzufügen. Bekomme die Fehlermeldung System.ArgumentOutOfRangeException: "Die Anzahl der zu erstellenden Kopien muss immer positiv sein.
setze RowHeadersVisible auf false Ist eine Eigenschaft in der Eigenschaften-Liste. Das ist sie weg und das Problem gelöst. Sieht eh Mist aus. ;) Das ist keine Spalte sondern eine "Navi-Hilfe". Mach sie weg, und navigiere mit ein dezenten Balken ;) Die genauen Infos darüber sind in der Hilfe.
Kleiner Tipp : Wenn du nochmal ein Prg. schreibst mit einen Datagridview mache folgendes Starte die IDE 2 x Lade in IDE-1 dein Prg. mit den Grid Klicke das Grid an, und dann STRG-C (kopieren) Wechsel in IDE-2 mit den neuen Prg. klicke auf die Form wo das Teil hin soll STRG-V (einfügen). Dann rechte maus auf das Grid, spalten bearbeiten, und fertig ist das neue Grid im neuen Programm. ALLE eingestellten (nicht programmierten) Eigenschaften werde durch das kopieren mit übernommen. So vergisst du nicht irgend eine Eigenschaft zu ändern ;) Ich bin faul, und merkte mir keine 100 Eigenschaften von so ein plöden Grid.
Wenn du Zeilen-Nr. haben willst, machst du folgendes. Setzte die erste Spalte fix, und füttere sie mit einer schleife. For i = 0 to datagridview.Rows.Count - 1 datagridview.rows(i).cells(0).value = i next i datagridview.Rows(0).ReadOnly = True ' oder in den Eigenschaften der Spalte setzen
danke, hat alles funktioniert. Jetzt noch die Frage, wie ich zeilen hinzufügen kann. Also entsprechend der Laufvariable - 1
Anstatt hier tausende von Fragen zu stellen, wie wäre es mit einem lauffähigen Beipspiel mit der konkreten Frage? http://csharp.net-informations.com/datagridview/csharp-datagridview-add-column.htm
Anz_neuer_zeilen = 2 DataGridview.rows.add (anzahl_neuer_zeilen) Das ist alles
Schlaumeier 2 schrieb: > Anz_neuer_zeilen = 2 > DataGridview.rows.add (anzahl_neuer_zeilen) > > Das ist alles super. jetzt läuft alles. <vielen <dank für Ihre Hilfe Sir. Eine letzte Frage: wenn ich hunderte Zeilen in der Tabelle eingefügt habe, wie kann ich einstellen, dass immer die zuletzt hinzugefügte Zeile angezeigt wird. und nicht die erste, sodass man immer scrollen muss....
Sorry war im Krankenhaus wegen Herzen :( Hier des Code-Schnipsel. Beachte die letzte Zeile. DataGridView.Rows.Add(100) ' 100 neue Zeilen For i = 1 To DataGridView.Rows.Count - 1 ' schleife füllt damit du die Zeilen zählen kannst DataGridView.Rows(i).Cells(1).Value = i Next i DataGridView.FirstDisplayedCell = DataGridView.Rows(gg.Rows.Count - 1).Cells(0) <- Springt zur ersten ZELLE in Zeile 100 und zeigt die an. Die Angabe muss so erfolgen, da du auch nach links/rechts positionieren musst/kannst. Bei 50 Spalten merkst du den Vorteil ;)
Sorry kann nicht editieren. Kleiner feiner Tippfehler im Code. Hier der richtige. DataGridView.Rows.Add(100) ' 100 neue Zeilen For i = 1 To DataGridView.Rows.Count - 1 ' schleife füllt damit du die Zeilen zählen kannst DataGridView.Rows(i).Cells(1).Value = i Next i DataGridView.FirstDisplayedCell = DataGridView.Rows(DataGridView.Rows.Count - 1).Cells(0) ' <- Springt zur ersten ZELLE in Zeile 100 und zeigt die an. Die Angabe muss so erfolgen, da du auch nach links/rechts positionieren musst/kannst. Bei 50 Spalten merkst du den Vorteil ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.