Я пытаюсь ввести определенный формат в текстовое поле с помощью метода нажатия клавиш
private void textbox_KeyPress(object sender, KeyPressEventArgs e){
switch (((TextBox)sender).Name){
case "txtTitle":
//code
break;
case "txtDate":
if(txtDate.Text.Count() > 9) e.Handled = true;
else{
switch (txtDate.Text.Count()){
case 0: //0,1,2,3 (day)
e.Handled = (e.KeyChar > 47 && e.KeyChar < 52)?false:true;
break;
case 1: //if last was 0,1,2 accept 0-9 (day)
if (txtDate.Text.Last() > 47 && txtDate.Text.Last() < 51) e.Handled = (e.KeyChar > 47 && e.KeyChar < 58)?false:true;
//if last was 3 accept 0,1
else if (txtDate.Text.Last() == 51) e.Handled = (e.KeyChar == 48 || e.KeyChar == 49)?false:true;
break;
case 2: case 5: // '/'
if (e.KeyChar != 47) e.Handled = true;
break;
case 3: //0,1 (month)
e.Handled = (e.KeyChar == 48 || e.KeyChar == 49)?false:true;
break;
case 4: //if last was 0 accept 0-9 (month)
if(txtDate.Text.Last() == 48) e.Handled = (e.KeyChar > 47 && e.KeyChar < 58)?false:true;
//if last was 0 accept 0-9
else e.Handled = (e.KeyChar > 47 && e.KeyChar < 51)?false:true;
break;
case 6: case 7: case 8: case 9: //0-9 (year)
e.Handled = (e.KeyChar > 47 && e.KeyChar < 58)?false:true;
break;
}
}
break;
case "txtBegin": case "txtEnd":
//code
break;
}
if (e.KeyChar == 8) e.Handled = false; //backspace
}
, но когда у меня есть полная дата, и я хочу изменить любые числа, я не могу сообщить символы, потому что я с использованием счетчика текста, так есть ли способ использовать положение курсора текстового поля вместо счетчика текста