windows forms grit radio button einlesen/ c# windows

Gast #6335280
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?
Gast #6335304
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?
Gast #6335788
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
Gast #6335896
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.
Gast #6335939
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.
Gast #6335941
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. 
;)
Gast #6335948
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.
Gast #6335971
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
Gast #6335984
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
Gast #6336155
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
Gast #6336298
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#
Gast #6336492
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.
Gast #6336509
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.
Gast #6336515
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.
Gast #6336529
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
Gast #6337279
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....
Gast #6338250
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 ;)
Gast #6338252
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 ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren