hallo,
gibt es beim DateTimepicker eine Eigenschaft, mit der ich angeben kann,
dass nach einer Eingabe per Tastatur der Cursor automatisch in das nächste Feld
vom dtp springt?
etwas passendes hab ich in den Eigenschaften nicht gefunden ! ev. übersehen ?
Beispiel:
Ein Kunde hat am 22.10.1967 Geburtstag
bisher muss ich immer mit dem Cursor weiterspringen
Hallo CB.NET,
ich glaube du hast nichts übersehen.
Du könntest höchstens probieren auf DateTimePicker.ValueChanged zu reagieren und dann ggf. selbst ins nächste Feld zu springen. Weiß aber nicht, ob man auf dem Weg wirklich ans Ziel kommt.
herbivore
danke dir...
also doch richtig geschaut...
Hallo CB.NET,
bisher muss ich immer mit dem Cursor weiterspringen
was mir gerade noch einfällt: Er springt auch durch Eingabe von Punkt ins nächste Feld.
Man kann also ganz normal 22.10.1967 hintereinanderweg eingeben.
herbivore
Original von herbivore
was mir gerade noch einfällt: Er springt auch durch Eingabe von Punkt ins nächste Feld.Man kann also ganz normal 22.10.1967 hintereinanderweg eingeben.
herbivore
klasse,
kannte ich auch noch nicht.
mal fragen, ob das auch meine User so akzeptieren, ansonsten werde ich wohl das ValueChanged anfassen müssen.
Mit den Pfeiltasten oder sogar mit Komma geht es ebenfalls... Das sollten bestimmt genug möglichkeiten sein, im fluss ein datum eingeben zu können... 👍
Wenn man was braucht ist es nicht da, ansonsten liegts im Weg rum...
Original von Dosihris
Mit den Pfeiltasten oder sogar mit Komma geht es ebenfalls... Das sollten bestimmt genug möglichkeiten sein, im fluss ein datum eingeben zu können... 👍
mit den Pfeiltasten ist aber ziemlich dumm, besonders wenn es schnell gehen soll.
da ziehe ich lieber die Variante mit dem Punkt vor.
wie schon gesagt, ich hätte es lieber gehabt, das ich das datum in einem Rutsch eingeben kann, ohne irgendwelche Zusatztasten
Also wenn ich ein Datum eingeben soll, dann nutze ich den Nummernblock. Und da sind die Pfeiltasten näher dran, was also schneller geht.. und ein Komma ist sogar im Nummernblock enthalten, jedenfalls bei mir. somit ist das nochmals schneller..
Wenn man was braucht ist es nicht da, ansonsten liegts im Weg rum...
Du könntest dafür sorgen, daß auch beim Drücken der Spacetaste das nächste Feld angewählt wird. Das dürfte den Usern noch am ehesten gefallen, da man die leichter und schneller trifft als . oder ,
dtp.KeyPress += delegate(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == ' ') e.KeyChar = '.';
};
Gruß,
T-Man
Du kannst auch noch die Enter-Taste als "Weiter"-Taste zulassen:
dtp.KeyPress += delegate(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == ' ' || e.KeyChar == '\\r') e.KeyChar = '.';
};
Gruß,
T-Man
im prinzip ist so was möglich. s. bsp,
class DateTimePickerX : DateTimePicker
{
int c = 0;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x102:
c++;
base.WndProc(ref m);
if (c == 2 || c == 4 || c == 8)
m.WParam = new IntPtr((int)'.');
else
return;
if (c == 8)
c = 0;
break;
}
base.WndProc(ref m);
}
}
danke,
das ist ja die Lösung für mein Problem schlechthin
aber was bedeutet Message 0x102 ?
Hallo CB.NET,
0x102 ist die Win32-Windows-Message WM_CHAR.
herbivore
Ganz sauber ist die Lösung mit dem Zähler c aber nicht.
Wenn man nämlich mal tatsächlich einen Punkt eingibt oder so, kommt die Zählung durcheinander...
Gruß,
T-Man
Hallo T-Man,
es gibt so gar noch mehr Probleme: Backspace, Entf, Einfg, Strg+V, Klicken mit der Maus ...
herbivore
Deshalb ist das auch keine Lösung, sondern dient nur zur Anregung, wie man so was realisieren kann. Man muss dabei noch viel berücksichtigen. Was macht man bei „Sonderzeichen“, wie ist es mit anderen Cultures, was mache ich, wenn Benutzer 32 in Tage rein schreibt, etc.