Autor Beitrag
DeStein
Hält's aus hier
Beiträge: 10

WIN 7

BeitragVerfasst: 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:
ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus WinForms verschoben am Sa 16.11.2013 um 19:25
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 16.11.13 20: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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: DeStein
DeStein Threadstarter
Hält's aus hier
Beiträge: 10

WIN 7

BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public partial class Form1 : Form {
  private int feld = 42//direkt mit dem Wert 42 initialisiert

  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 Threadstarter
Hält's aus hier
Beiträge: 10

WIN 7

BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10

WIN 7

BeitragVerfasst: So 17.11.13 18:46 
Ich habe es mal ein bisschen versucht und jetzt steht immer eine 1 dran
ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 17.11.13 19:01 
user profile iconDeStein hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe es mal ein bisschen versucht und jetzt steht immer eine 1 dran
Wundert dich das?
ausblenden C#-Quelltext
1:
2:
3:
4:
    private void button1_Click(object sender, EventArgs e)
        {          
            label1.Text = Zähler.ToString();  
        }

Du hast zwei Methoden:
ausblenden C#-Quelltext
1:
2:
public void GebeAus()
public void ErhöheUmEins()

Vielleicht liegt es nahe, diese auch aufzurufen. :idea: ;)

Für diesen Beitrag haben gedankt: DeStein
DeStein Threadstarter
Hält's aus hier
Beiträge: 10

WIN 7

BeitragVerfasst: 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:
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10

WIN 7

BeitragVerfasst: 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
ausblenden volle Höhe 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)
            {

            }
        }
    }
}
papa69
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 79
Erhaltene Danke: 23

Win 10, Ubuntu
C#, Java, C
BeitragVerfasst: 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

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if (bedingung < 0 )
{
   tuDies();
}
else if (bedingung == 0 )
{
    tuWasAnderes();
}
else        //wenn bedingung NICHT größer 0 UND AUCH NICHT genau 0 ist
{
    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 Threadstarter
Hält's aus hier
Beiträge: 10

WIN 7

BeitragVerfasst: 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
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.