Laden...

Inkrementieren einer Zahl in einer TextBox um 1 nach Button-Klick

Erstellt von Sharpshark vor 8 Jahren Letzter Beitrag vor 7 Jahren 3.169 Views
S
Sharpshark Themenstarter:in
6 Beiträge seit 2015
vor 8 Jahren
Inkrementieren einer Zahl in einer TextBox um 1 nach Button-Klick

vorab, ich hoffe, dass ich diesen thread in die richtige kategorie gepostet hab. (Schien mir am besten hier) - wenn es trotzdem die falsche ist, bitte verschieben, wenns geht

Zweitens, auch wenn dies eine sehr leicht zu googelnde Frage ist, hab ich doch nichts gefunden, keine lösung passt direkt zu meinem problem, habe schon versucht die Codezeilen umzuschreiben, dass es auch wirklich für mich passt, jedoch will es aus irgendeinem Grund nicht funktionieren.

Mein Problem ist, ich habe eine Textbox, und die hat eine x-beliebige Zahl von sagen wir 0 bis 10000, und ich möchte dass jedes Mal, wenn auf mein Button1 gedrückt wird, die Zahl sich um +1 steigert.

Mein momentaner Code schaut so aus:

string value = "5";
int number = int.Parse(value);
textBox1.Text = (number + 1).ToString();

Jedoch steigert sich der Wert also vom TextBox1 nur einmal, danach will es nicht mehr ... bin für jede Lösung dankbar

Sollte das nicht klappen, wäre mir auch Recht wenn jemand erklärt, wie man eine zufällige Zahl zwischen 0 und 2^31 - 1 generiert mit den Zahlen 0-9 ... müsst nicht den ganzen Code direkt nur für mich aufschreiben oder extra googeln, mir wär auch Recht wenn ihr vorgibt, womit ich das ganze auch bei min Code hinbekomm .... Danke schonmal im Voraus

vergessen hinzuzufügen: ich hatte auch überlegt, den Code zum Addieren von Zahlen aus einem Taschenrechner zu kopieren und dann umzuschreiben, jedoch weiss ich nicht ob es damit klappen könnte

16.806 Beiträge seit 2008
vor 8 Jahren

[Artikel] Debugger: Wie verwende ich den von Visual Studio? hilft in 99,9999% der Fälle bei sowas.

J
251 Beiträge seit 2012
vor 8 Jahren

Wieso sollte eine Zahl sich mehrmals um eins erhöhen, wenn der Ausgangswert konstant ist?

wie man eine zufällige Zahl [FAQ] Random.Next liefert eine Zeit lang die gleiche Zufallszahl - Warum? Wie geht es richtig?

S
Sharpshark Themenstarter:in
6 Beiträge seit 2015
vor 8 Jahren

Dankeschön euch 2

2.298 Beiträge seit 2010
vor 8 Jahren

Hallo SharpSharp,

ich würde garnicht erst anfangen mit int.Parse und der Textbox zu spielen. Da gibt es deutlich bessere Wege.

Mein Ansatz wäre gewesen Datenklasse zu erstellen für das Form.


public class FormData : INotifyPropertyChanged
{
    private int _counter = 0;
    public int Counter
    {
         get { return _counter; }
         set 
         { 
              if(_counter == value)
                  return;
              _counter = value;
              this.OnPropertyChanged("Counter");
         }
    }

    private void OnPropertyChanged(string property)
    {
           if(this.PropertyChanged != null)
                this.PropertyChanged(this, new PropertyChangedEventArgs(property));
    }
   
    public event PropertyChangedEventHandler PropertyChanged;
}

Im Form wird das dann per DataBinding gebunden:


public class Form1 : Form
{
      public Form1()
      {
             this.SetBinding(this.txtCounter, "Text", _formData, "Counter");
      }
      
      private FormData _formData = new FormData();

      private void SetBinding(Control ctrl, string property, Object dataSource, string datamember)
      {
             ctrl.DataBindings.Add(property, datasource, datamember, DataSourceUpdateMode.OnPropertyChanged);
      }

      private void MyButtonClick(Object sender, EventArgs e)
      {
          this._formData.Counter ++;
      }
}


Ich weiß ist n bisschen viel fü den Anfang, aber wenn man es gleich auf die Art und Weise aufbaut gewöhnt man sich das manuelle Handling der Eingaben gar nicht erst an.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

S
Sharpshark Themenstarter:in
6 Beiträge seit 2015
vor 7 Jahren

Guten Abend, grabe hier jetzt wieder den Thread aus, aber nur falls jemand mal auf diesen Thread stoßen sollte und rasch eine Antwort braucht...

(Ich selbst habe diese simple Zeile erst vorhin durch einen Freund erhalten)

Ersetzt eure textBox durch eine numericUpDown (Zwar blöd aber geht ja sicher in Ordnung für Hobbyprogrammierer wie mich)

Code (sollte zum Beispiel ein Button oder Label geklickt werden):
numericUpDown1.Value += 1;

1 ist in diesem Falle die Zahl um die es sich vergrößert pro Klick. Das Plus vor dem = gibt an, dass es sich erhöhen soll. Einfach durch ein - ersetzen falls es sich vermindern soll.

Trotzdem dankeschön an alle anderen die hier geantwortet haben, aber so ist es mir dann doch lieber 👅

Und ja... so komisch es sich anhört... Dieser Thread war einige Monate als Lesezeichen eingespeichert für den Fall dass ich das ganze Thema dann doch versteh 😁

463 Beiträge seit 2009
vor 7 Jahren

Und warum versucht du dann nicht dich weiter zu entwickeln? Für deine Lösung hättest du übrigens kein NumericUpDown benötigt - dies geht auch mit der Textbox... Wobei ich dies echt nicht als Lösung bezeichnen würde...

Auf Dauer wirst du so nicht weiterkommen - auch als Hobbyprogrammierer nicht!

S
Sharpshark Themenstarter:in
6 Beiträge seit 2015
vor 7 Jahren

Und warum versucht du dann nicht dich weiter zu entwickeln?

Auf Dauer wirst du so nicht weiterkommen - auch als Hobbyprogrammierer nicht!

Größtenteils weil ich nur programmiere, (oder versuche zu programmieren 👅 ) sollte ich mal Zeit haben und da C# auch eine in meinen Augen schwere Sprache an sich ist findet sich nicht so viel Zeit es mal zu lernen

Für deine Lösung hättest du übrigens kein NumericUpDown benötigt - dies geht auch mit der Textbox...

Aber um das zu realisieren, na so gut kann ich C# leider noch nicht dass ich das ohne Copy und Paste hinbekommen würde... auch nicht wenn mir einer vorgibt was im Code alles vorkommen muss

Wobei ich dies echt nicht als Lösung bezeichnen würde...

Zitiere hier mal

If it's stupid but it works, it isn't stupid. 😄👍

463 Beiträge seit 2009
vor 7 Jahren

Ohne Worte... Mehr gibt es dazu nicht zu sagen...