PDA

Vollständige Version anzeigen : Addition von maskedTextBox


g. janssen
17.04.2007, 19:24
Hallo,

kann ich 3 Textboxen Werte Eintragen, die automatisch addieren und das Ergebnis in einer 4. Textbox oder einem Textfeld anzeigen lassen?

hcscherzer
17.04.2007, 23:26
Moin,
klar kannst Du das, Du musst nur für die drei Textboxen jeweils eine 'After_Update' Prozedur definieren in der stehtTextBox4 = Val(TextBox1) + Val(TextBox2) + Val(TextBox3)

g. janssen
18.04.2007, 17:12
und wie erstellt man eine After_Update Prozedur?

Noodles
18.04.2007, 19:27
Abonniere das TextChanged Event und berechne es dort.

g. janssen
18.04.2007, 21:30
danke, aber ich muss zugeben, ich versteh nur Bahnhof.

Bin gerade erst in die Welt von C# eingestiegen.

Ich möchte doch nur, das in einer Textbox oder einem Label die Summe dreier Textboxen erscheint.

Ich habe echt keinen plan, wied der Code dafür aussehen soll.

Selbst beo googlehab ich nichts gefunden.....

Joris
18.04.2007, 22:01
Hallo,

ich habe dir eben mal so ein Programm geschrieben, damit du siehst, wie es geht:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Addieren
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox4.Text = Convert.ToString(
Convert.ToDouble(textBox1.Text) +
Convert.ToDouble(textBox4.Text)) ;

}

private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox4.Text = Convert.ToString(
Convert.ToDouble(textBox2.Text) +
Convert.ToDouble(textBox4.Text));
}

private void textBox3_TextChanged(object sender, EventArgs e)
{
textBox4.Text = Convert.ToString(
Convert.ToDouble(textBox3.Text) +
Convert.ToDouble(textBox4.Text));
}

private void textBox4_TextChanged(object sender, EventArgs e)
{

}

private void Form1_Load(object sender, EventArgs e)
{
textBox4.Text = "0";
}

}
}



TextChanged ist ein Event. Wenn du in deinen TextBoxen den Text veränderst wird er zu dem Wert in TextBox4 dazuaddiert.

Achtung: Ich wollte es dir nicht zu schwer machen und habe die Fehlerbehandlung bei diesem Programm ausgelassen. Und das Programm ist noch nicht augereift. Es macht einige Berechnungen falsch. Ich habe das jetzt nur kurz und einfach geschrieben, damit du das Prinzip verstehst! Wenn du willst, schreibe ich eine komplette Version, die Fehlerbehandlung und enthält und die Berechnungen hundertprozentig richtig ausführt. :)

Viele Grüße

Joris

Noodles
18.04.2007, 22:01
Dann schau mal in der Doku nach dem TextChanged Event. Das abonnierst Du für die beiden TextBoxen, deren Werte Du addieren willst. In dem Eventhandler addierst Du beiden Werte und schreibst das Ergebnis in Dein Label. Fehlerbehandlung nicht vergessen!

g. janssen
19.04.2007, 18:14
Erstmal Danke für eure Antworten,


ih habe es jetzt mal versucht - auch mit dem von Joris geposteten Code - aber es tut sich nichts.

Hab die Namen der Boxen geändert...


Kann mit jemand das mal anhand eines kleines Beispiel Programms zeigen?

Joris
19.04.2007, 18:46
Das was ich oben gepostet habe, ist ein komplettes Beispielprogramm! ;)

g. janssen
19.04.2007, 18:54
wenn ich aber nun dasProgramm starte, und in den Textfeldern etwas eingebe, dann bleibet im 4. Textfeld trotzdem eine Null stehen.

Und das soller ja eigentlich nicht....

Noodles
19.04.2007, 19:01
Vlt. solltest Du mal etwas Code von Dir zeigen. Ein kompletten Code werde ich nicht posten, außerdem hast Du da auch schon einen bekommen.

g. janssen
19.04.2007, 19:44
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void maskedTextBox2_TextChanged(object sender, EventArgs e)
{
maskedTextBox5.Text = Convert.ToString(
Convert.ToDouble(maskedTextBox2.Text) +
Convert.ToDouble(maskedTextBox5.Text));

}

private void maskedTextBox3_TextChanged(object sender, EventArgs e)
{
maskedTextBox5.Text = Convert.ToString(
Convert.ToDouble(maskedTextBox3.Text) +
Convert.ToDouble(maskedTextBox5.Text));
}

private void MaskedTextBox4_TextChanged(object sender, EventArgs e)
{
maskedTextBox5.Text = Convert.ToString(
Convert.ToDouble(maskedTextBox4.Text) +
Convert.ToDouble(maskedTextBox5.Text));
}


private void Form1_Load(object sender, EventArgs e)
{
maskedTextBox5.Text = "0";
}
}
}

Das ist der ganze Code der Form.
Nur die namen der Textfelder habe ich geändert.
Beim Starten zeigt er mir auch im 5. Die 0 an.
Bim eingeben von Zahlen in den anderen Feldern pasiert nichts...

Joris
19.04.2007, 21:06
Es kann eigentlich nicht sein, dass nichts passiert! Schau dir die Namen der Steuerelemente noch mal ganz genau an. Es muss auf jeden Fall etwas passieren! ;)

Noodles
19.04.2007, 22:24
Hast Du die Eventhandler nur hineinkopiert oder sind diese auch mit dem TextChanged-Event der jeweiligen TextBox verbunden?

MaskedTextBox4.TextChanged += new EventHandler(MaskedTextBox4_TextChanged);

g. janssen
19.04.2007, 23:04
sorry, aber ich versteh nur Bahnhof...
Nun addiert er mir die Felder, jedoch wenn ich eine 2 schreibe, zeigt er mir 2 an.
wenn ich ne 0 dazu schreibe - also 20 - macht er 22 draus...
Bei jedem tastenschlag addiert er die darauffolgende Zahldrauf...

Sollte ich mich verschreiben, und die Backspace Taste drücke, meckert er... Fehler

Sich in C# einzuarbeiten ist ja viel komplizierter als ich dachte

Ich kauf mir ein zweites Buch...