Laden...

Formatierung von Textboxen

Erstellt von King-Malkav vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.821 Views
King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren
Formatierung von Textboxen

Hi, ich habe für einen Kollegen ein kleines Zeitberechnungsprogramm geschrieben. Mein Problem ist es nur das die Eingabefelder nicht foramtiert sind, sprich er soll nur 4 ziffern eingeben können und das ganze muss dann so aussehen hh:mm

Wie bekomm ich das hin. Das zweite Problem ist, dass ich das ausgerechnete ergebnis in Dezimal benötige, sprich z.B. 9,5 Stunden.

Hier mal den Code:

 
private void rechnen_Click(object sender, System.EventArgs e)
		{
			string start = textBox1.Text.ToString();
			string ende = textBox2.Text.ToString();
			string strabzug = abzug.Text.ToString();
			string tag = "1.00:00:00";

			TimeSpan dtstart = new TimeSpan();
			TimeSpan dtende = new TimeSpan();
			TimeSpan dtberechnung = new TimeSpan();
			TimeSpan dttag = new TimeSpan();
			TimeSpan dtabzug = new TimeSpan();

			dtstart = TimeSpan.Parse(start);
			dtende = TimeSpan.Parse(ende);
			dttag = TimeSpan.Parse(tag);
			dtabzug = TimeSpan.Parse(strabzug);

			if (dtende < dtstart)
			{
				dtberechnung = dtende + dttag - dtstart - dtabzug;
			}
			else
			{
				dtberechnung = dtende - dtstart - dtabzug;
			}
			erg.Text = dtberechnung.ToString();
			
		}

MFG und danke im vorraus

M
1.439 Beiträge seit 2005
vor 17 Jahren

MaskedTextBox ab .Net 2.0

S
129 Beiträge seit 2006
vor 17 Jahren

Custom Control basteln (von TextBox ableiten)

Oder beim TextChanged Ereignis der TextBox den eingebenen Text überprüfen/verändern/verbieten.

Edit: Mein Vorgänger hat recht! :p

//// scarp

King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren

Original von scarp
Custom Control basteln (von TextBox ableiten)

Oder beim TextChanged Ereignis der TextBox den eingebenen Text überprüfen/verändern/verbieten.

Edit: Mein Vorgänger hat recht! :p

Wie macht man dass? VS2005 ist hier im Moment nicht verfügbar.

MFG

S
129 Beiträge seit 2006
vor 17 Jahren

textBox1.TextChanged += new EventHandler(textBox1_TextChanged);

void textBox1_TextChanged(object sender, EventArgs e)
{
   if(textBox1.Text.Length > 4)
   {
           usw......
   }
}

//// scarp

King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren

Gut das funzt jetzt, zwar etwas umständlich, aber ok.

Wie schaut das umrechnen in dezimal aus, gibts da eine einfache möglichkeit?

oder muss ich mir dafür eine Funktion schreiben?

S
129 Beiträge seit 2006
vor 17 Jahren

Das Ergebnis Convert.ToDouble( ergebnis ).

Bzw. auch vorher schon mit double rechnen.

Edit: Oder decimal wie auch immer, das sollte nicht so schwer sein.

//// scarp

King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren

Mhh man muss es gar nicht so umständlich machen, Spantime gibt sowas her. Einfach TotalHours() benutzen und man bekommt genau das was ich will.

Trotzdem danke.

MFG

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo King-Malkav,

du meinst vermutlich TimeSpan.

herbivore

King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren

Original von herbivore
Hallo King-Malkav,

du meinst vermutlich TimeSpan.

herbivore

Ja danke. War gestern etwas zeitlich unter druck als ich den Beitrag geschrieben habe, aber ich denke es kam rüber was gemeint war. 🙂

MFG

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo King-Malkav,

ja, klar für einen der die Klasse kennt, war es klar. Nur wer die Klasse nicht kennt, kommt vielleicht nicht darauf, die Namensbestandteile umzudrehen. Nur deshalb der Hinweis von mir.

herbivore