如何获取文本框中输入的索引
How to get the index of the input in a textbox
我正在尝试使用按键方法将某种格式强制输入文本框
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
}
但是当我有一个完整的日期并且我想更改任何数字时我不能强制使用字符因为我使用的是文本计数所以有什么方法可以使用文本框的光标位置而不是文本计数
TextBox.SelectionStart
将为您提供插入符号的位置。
If no text is selected in the control, this property indicates the insertion point, or caret, for new text
就是说,您知道已经有一个用于从用户捕获日期的控件吗?它称为 DateTimePicker
. It has a Format
属性,可用于控制日期如何显示给用户。
如果您使用的是 WPF,快速查看 TextBox
上的属性会发现它有一个 TextBox.CaretIndex
可以让您找到插入符号的位置。
从用户那里获取日期的控件是DatePicker
。
我正在尝试使用按键方法将某种格式强制输入文本框
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
}
但是当我有一个完整的日期并且我想更改任何数字时我不能强制使用字符因为我使用的是文本计数所以有什么方法可以使用文本框的光标位置而不是文本计数
TextBox.SelectionStart
将为您提供插入符号的位置。
If no text is selected in the control, this property indicates the insertion point, or caret, for new text
就是说,您知道已经有一个用于从用户捕获日期的控件吗?它称为 DateTimePicker
. It has a Format
属性,可用于控制日期如何显示给用户。
如果您使用的是 WPF,快速查看 TextBox
上的属性会发现它有一个 TextBox.CaretIndex
可以让您找到插入符号的位置。
从用户那里获取日期的控件是DatePicker
。