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
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
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
textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
void textBox1_TextChanged(object sender, EventArgs e)
{
if(textBox1.Text.Length > 4)
{
usw......
}
}
//// scarp
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?
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
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
Hallo King-Malkav,
du meinst vermutlich TimeSpan.
herbivore
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
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