Entwickler-Ecke
Basistechnologien - Button klick +1
DeStein - Sa 16.11.13 18:59
Titel: Button klick +1
Hallo
Ich habe ein Problem und zwar dass ich ein button habe der eigentlich bei jedem klick dem label +1 hinzufügt aber es geht nur einmal.
Hier mein code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace WindowsFormsApplication4 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click_1(object sender, EventArgs e) { int Zähler = 0; int ergebnis = 0; Zähler = 0; ergebnis = Zähler + 1; label1.Text = ergebnis.ToString(); } } |
Moderiert von
Christian S.: C#-Tags hinzugefügtModeriert von
Christian S.: Topic aus WinForms verschoben am Sa 16.11.2013 um 19:25
Christian S. - Sa 16.11.13 19:24
Hallo und :welcome:!
Du hast Zähler als lokale Variable der Methode deklariert und füllst sie bei jedem Mal neu mit dem Wert 0. Und danach addierst Du 1. Du rechnest also jedes Mal 0 + 1, das ergibt natürlich immer 1.
Du musst die Zählervariable als Feld der Form-Klasse deklarieren und den Anfangswert 0 nur einmal (am Besten direkt bei der Deklaration) zuweisen. In der Klick-Methode erhöhst Du den Wert dieses Feldes dann immer um 1 und gibst es aus. Die Variable ergebnis brauchst Du dann nicht mehr.
Viele Grüße
Christian
DeStein - Sa 16.11.13 19:59
Danke schon mal für die Antwort
aber ich programmiere jetzt erst seit zwei Wochen und wollte fragen wie man das macht
Christian S. - Sa 16.11.13 23:01
Hallo!
Also, als Feld bezeichnet man eine Variable, die nicht zu einer speziellen Methode gehört, sondern zur Instanz einer Klasse. Wenn ich also eine Klasse habe, die so aussieht:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| public partial class Form1 : Form { private int feld = 42; public void ErhöheUmEins() { feld += 1; }
public void GebeAus() { label1.Text = feld.ToString(); } } |
Dann sieht man schon, dass
feld nicht in einer der Methoden deklariert ist, sondern zur gesamten Klasse gehört. Beide Methoden greifen auf dieses Feld zu, was die eine Methode mit dem Feld macht, "sieht" auch die andere Methode.
Grüße
Christian
DeStein - So 17.11.13 03:50
Bei mir funktioniert des nicht
ich hab des eingefügt und wenn ich des starte und auf den button klicke passiert nichts
Christian S. - So 17.11.13 10:12
Nur mit Einfügen geht das auch nicht. Du musst schon noch verstehen, was ich geschrieben habe und dann anwenden. Wenn Du Fragen zum Verständnis hast, kannst Du gerne hier fragen, aber einen fertigen Quelltext, den Du ohne Eigenleistung übernehmen kannst, bekommst Du von mir nicht.
Th69 - So 17.11.13 10:12
Hallo,
der Code von Christian ist ja nur ein Beispiel. Für deinen Code hat Christian dir ja schon geschrieben, daß du die Variable 'Zähler' innerhalb der Klasse hinschreiben mußt und daß du dann diese Variable erhöhen mußt (und nicht die Variable 'ergebnis').
Wenn du damit immer noch nicht klarkommst, dann poste nochmal deinen geänderten Code.
Edit: Guten Morgen Christian - wußte nicht, daß du gleichzeitig postest ;-)
DeStein - So 17.11.13 17:46
Ich habe es mal ein bisschen versucht und jetzt steht immer eine 1 dran
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| namespace WindowsFormsApplication7 { public partial class Form1 : Form {
public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { label1.Text = Zähler.ToString(); }
private int Zähler = 1; public void ErhöheUmEins() { Zähler += 1; } public void GebeAus() { label1.Text = Zähler.ToString(); } } } |
Moderiert von
Christian S.: C#-Tags hinzugefügt
Marc. - So 17.11.13 18:01
DeStein hat folgendes geschrieben : |
| Ich habe es mal ein bisschen versucht und jetzt steht immer eine 1 dran |
Wundert dich das?
C#-Quelltext
1: 2: 3: 4:
| private void button1_Click(object sender, EventArgs e) { label1.Text = Zähler.ToString(); } |
Du hast zwei Methoden:
C#-Quelltext
1: 2:
| public void GebeAus() public void ErhöheUmEins() |
Vielleicht liegt es nahe, diese auch aufzurufen. :idea: ;)
DeStein - So 17.11.13 22:09
Des Funktioniert jetzt bei mir und ich hab noch dazu gemacht das wenn ich meinen 2. button klicke es 1 vom ersten abzieht wie kann man machen dass das erste nicht unter null geht
Hier mein Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| namespace WindowsFormsApplication8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { ErhöheUmEins(); GebeAus(); } private int Zähler = 1; public void ErhöheUmEins() { Zähler += 1; } public void GebeAus() {
label1.Text = Zähler.ToString(); }
private void button2_Click(object sender, EventArgs e) { ErhöheUmEins2(); GebeAus2(); } private int Zähler2 = 1; public void ErhöheUmEins2() { Zähler2 += 4; Zähler -= 1; } public void GebeAus2() {
label2.Text = Zähler2.ToString(); label1.Text = Zähler.ToString(); } } } |
Th69 - Mo 18.11.13 13:37
Hallo,
die if-Anweisung solltest du aber schon kennen. Um die Grundlagen von C# selbst zu lernen, ist es besser, erst einmal einfache Konsolenanwendungen zu erstellen - solange bis du alle (bzw. die meisten) C#-Schlüsselwörter kennst; erst dann solltest du zur GUI-Programmierung wechseln.
DeStein - Mo 18.11.13 18:17
Ich habe es mit if versucht aber weiß nicht wie ich das machen soll das es wenn es richtig ist etwas macht und wenn nicht dann nicht
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| namespace WindowsFormsApplication8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { ErhöheUmEins(); GebeAus(); } private int Zähler = 0; public void ErhöheUmEins() { Zähler += 1; } public void GebeAus() {
label1.Text = Zähler.ToString(); }
private void button2_Click(object sender, EventArgs e) { ErhöheUmEins2(); GebeAus2(); } private int Zähler2 = 1;
public void ErhöheUmEins2() { Zähler2 += 4; Zähler -= 1; } public void GebeAus2() {
label2.Text = Zähler2.ToString(); label1.Text = Zähler.ToString(); } private void Ende() { bool bedingung = Zähler > 0;
if (bedingung == true) { }
if (bedingung == false) {
} } } } |
DeStein - Mi 20.11.13 14:59
Ich habe das mit if jetzt geschafft und wollte fragen wie man die schritte die der zähler hoch geht mit einem button ändern kannund wie man int zu string machen kann
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| namespace WindowsFormsApplication8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { ErhöheUmEins(); GebeAus(); } private int Zähler = 0; public void ErhöheUmEins() { Zähler += 1; } public void GebeAus() {
label1.Text = Zähler.ToString(); }
private void button2_Click(object sender, EventArgs e) { if (Zähler > 0) { ErhöheUmEins2(); } GebeAus2(); } private int Zähler2 = 1;
public void ErhöheUmEins2() { Zähler2 += 4; Zähler -= 1; } public void GebeAus2() {
label2.Text = Zähler2.ToString(); label1.Text = Zähler.ToString(); }
public void button3_Click(object sender, EventArgs e) { if (label2.Text = 100) {
} } } } |
Th69 - Mi 20.11.13 15:36
Hallo DeStein,
ich schließe mal dieses Thema, da die eigentliche Frage ja beantwortet wurde.
Deine beiden anderen Fragen lassen sich mit jedem Grundlagenbuch (wie das schon erwähnte OpenBook über C#) oder aber durch Suche im Forum (bzw. Internet) lösen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!