今天写winform应用的时候想写一个类似于银行输入金额的那样的一个文本框,就是当用户输入满多少位的时候自动在后面添加诸如逗号之类的标识符,字符的判断在TextChanged 中很好实现,但有个问题就是我在判断到输入满8位的时候就自动添加一个逗号,但是文本框的光标就会跑到文本框开始的位置,很不方便,所以找了一些解决办法,代码如下
代码如下 | 复制代码 |
private void textBox9_TextChanged_1(object sender, EventArgs e) { if(textBox9.Text.Length==8*(i+1)+i) { textBox9.Text += ","; i++; textBox9.SelectionStart = int.MaxValue; } } |
可以使用textbox的selectionstart属性设置光标所在的位置。
js代码
在IE、Firefox、Opera等主流浏览器的获取光标位置(getCursortPosition)以及设置光标位置(setCursorPosition)的函数。
代码如下 | 复制代码 |
function getCursortPosition (ctrl) {//获取光标位置函数 var CaretPos = 0; // IE Support if (document.selection) { ctrl.focus (); var Sel = document.selection.createRange (); Sel.moveStart ('character', -ctrl.value.length); CaretPos = Sel.text.length; } // Firefox support else if (ctrl.selectionStart || ctrl.selectionStart == '0') CaretPos = ctrl.selectionStart; return (CaretPos); } |
PS:参数ctrl为input或者textarea对象
代码如下 | 复制代码 |
function setCaretPosition(ctrl, pos){//设置光标位置函数 if(ctrl.setSelectionRange) { ctrl.focus(); ctrl.setSelectionRange(pos,pos); } else if (ctrl.createTextRange) { var range = ctrl.createTextRange(); range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } } |
PS:参数ctrl为input或者textarea对象,pos为光标要移动到的位置
时间: 2024-11-13 08:39:22