Forum: PC-Programmierung windows forms grit radio button einlesen/ c# windows


von key (Gast)


Lesenswert?

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?

von key (Gast)


Lesenswert?

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?

von Key (Gast)


Lesenswert?

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

von Wolfgang H. (drahtverhau)


Lesenswert?

Ja. So ähnlich

von key (Gast)


Lesenswert?

was mir noch fehlt: wie kann ich ein ganz bestimmtes Feld ausfüllen 
lassen?

von Key (Gast)


Lesenswert?

Moin niemand?

von cppbert (Gast)


Lesenswert?

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?

von key (Gast)


Lesenswert?

cppbert schrieb:
> Weisst du nicht wie man ein Feld fuellt?

ja das ist mein Problem

von key (Gast)


Lesenswert?


von Key (Gast)


Lesenswert?


von cppbert (Gast)


Lesenswert?

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

von key (Gast)


Lesenswert?

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.

von key (Gast)


Lesenswert?

ich möchte die Klasse DataGridViewTextBoxColumn verwenden

von key (Gast)


Lesenswert?

key schrieb:
> ich möchte die Klasse DataGridViewTextBoxColumn verwenden

das wahrscheinlkich schwachsinn, weil ich ja keine Daten einlesen 
möchte. Sondern nur asugeben

von key (Gast)


Lesenswert?

also ich bei recherhce gesehen, dass meist eine virtuelle Tabelle 
angelegt wird und damit die grit ausgefüllt wird. hilft mir aber nicht 
weiter

von Schlaumaier (Gast)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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. 
;)

von Schlaumaier (Gast)


Lesenswert?

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.

von key (Gast)


Lesenswert?

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";

von key (Gast)


Lesenswert?

danke für die Tipps. hast du mal ein screenshot vom design?

Schlaumaier schrieb:
> Kleiner Nebenhinweis.

von Schlaumaier (Gast)


Lesenswert?

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

von Schlaumaier (Gast)


Lesenswert?

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

von cppbert (Gast)


Lesenswert?

Es geht winforms und c#

von Schlaumaier (Gast)


Lesenswert?

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

von key (Gast)


Lesenswert?

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.

von key (Gast)


Lesenswert?

also wenn noch jemand was brauchbares für c# und Windows forms hat, 
immer her damit

von key (Gast)


Lesenswert?

es ist doch eine simple Frage: wie kann ich ein einzelnes Feld in einer 
data grit view ansprechen/ deren Wert verändern?

von Schlaumaier (Gast)


Lesenswert?

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#

von Schlaumaier (Gast)


Lesenswert?

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.

von key (Gast)


Lesenswert?

hat mir geholfen, danke dir

von key (Gast)


Angehängte Dateien:

Lesenswert?

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?

von key (Gast)


Lesenswert?

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.

von key (Gast)


Lesenswert?

die Variable müsste den Wert eins haben

von key (Gast)


Lesenswert?

key schrieb:
> spalten

zeilen

von Schlaumaier (Gast)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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

von key (Gast)


Lesenswert?

danke, hat alles funktioniert. Jetzt noch die Frage, wie ich zeilen 
hinzufügen kann. Also entsprechend der Laufvariable - 1

von Dirk (Gast)


Lesenswert?

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

von Schlaumeier 2 (Gast)


Lesenswert?

Anz_neuer_zeilen = 2
DataGridview.rows.add (anzahl_neuer_zeilen)

Das ist alles

von key (Gast)


Lesenswert?

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....

von Schlaumaier (Gast)


Lesenswert?

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 ;)

von Schlaumaier (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.