如何获得文本框中输入的索引

问题描述 投票:0回答:1

我正在尝试使用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
}

但是当我有一个完整的日期并且我想更改任何不能强制使用字符的数字时,因为我正在使用文本计数,因此有任何方法可以使用文本框的光标位置而不是文本计数

c# textbox string-formatting
1个回答
0
投票

如果控件中未选择任何文本,则此属性指示新文本的插入点或插入号

© www.soinside.com 2019 - 2024. All rights reserved.