Autor |
Beitrag |
DeStein
Hält's aus hier
Beiträge: 10
WIN 7
|
Verfasst: Sa 16.11.13 19:59
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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 16.11.13 20:24
Hallo und  !
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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Für diesen Beitrag haben gedankt: DeStein
|
|
DeStein 
Hält's aus hier
Beiträge: 10
WIN 7
|
Verfasst: Sa 16.11.13 20: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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 17.11.13 00: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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Für diesen Beitrag haben gedankt: DeStein
|
|
DeStein 
Hält's aus hier
Beiträge: 10
WIN 7
|
Verfasst: So 17.11.13 04: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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 17.11.13 11: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.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Für diesen Beitrag haben gedankt: DeStein
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: So 17.11.13 11: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 
Für diesen Beitrag haben gedankt: DeStein
|
|
DeStein 
Hält's aus hier
Beiträge: 10
WIN 7
|
Verfasst: So 17.11.13 18:46
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: So 17.11.13 19:01
Für diesen Beitrag haben gedankt: DeStein
|
|
DeStein 
Hält's aus hier
Beiträge: 10
WIN 7
|
Verfasst: So 17.11.13 23: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:
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
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mo 18.11.13 14: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.
Für diesen Beitrag haben gedankt: DeStein
|
|
DeStein 
Hält's aus hier
Beiträge: 10
WIN 7
|
Verfasst: Mo 18.11.13 19: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
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) {
} } } } |
|
|
papa69
      
Beiträge: 79
Erhaltene Danke: 23
Win 10, Ubuntu
C#, Java, C
|
Verfasst: Mo 18.11.13 21:40
deine "Ende()-Methode" kann so nicht funktionieren...
mittels if prüfst du schon automatisch, ob etwas wahr ist (oder eben nicht)
siehe hier openbook.galileocomp.../kap12.htm#Xxx958418
und/oder hier msdn.microsoft.com/d...ibrary/676s4xab.aspx
also machst du
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if (bedingung < 0 ) { tuDies(); } else if (bedingung == 0 ) { tuWasAnderes(); } else { tuEsNicht(); } |
good luck 
_________________ Daniel Bauer
... fatal ist nur, wenn sich das Licht am Ende des Tunnels als entgegenkommender ICE entpuppt ...
Für diesen Beitrag haben gedankt: DeStein
|
|
DeStein 
Hält's aus hier
Beiträge: 10
WIN 7
|
Verfasst: Mi 20.11.13 15: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
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
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mi 20.11.13 16: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.
|
|