我正在尝试使用keypress方法将某种格式强制输入文本框
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
}
但是当我有一个完整的日期并且我想更改任何不能强制使用字符的数字时,因为我正在使用文本计数,因此有任何方法可以使用文本框的光标位置而不是文本计数
如果控件中未选择任何文本,则此属性指示新文本的插入点或插入号