如何用程序将值发送到文本框
本文关键字:文本 何用 程序 | 更新日期: 2023-09-27 18:07:54
我有一个文本框,我必须从虚拟键盘向该文本框发送值。我像一样发送
txtNumber.Text = txtNumber.Text.Insert(txtNumber.CaretIndex, ((Button)sender).Content.ToString());
txtNumber.CaretIndex += txtNumber.Text.Length;
txtNumber.focus();
问题是,当用户在键入某个字符后强行将光标放在文本之间时,按下该键意味着第一次正确插入值,然后光标需要在那里。
上面的这个逻辑使它最终停留在光标的位置。
如何做到这一点?
使用此代码,我已经检查过了:
int CurrentIndex;
private void textNumber_Click(object sender, EventArgs e)
{
CurrentIndex = textNumber.SelectionStart;
}
private void Key_Click(object sender, EventArgs e)
{
textNumber.Text = textNumber.Text.Insert(CurrentIndex, "_");
}
如果我理解这个问题,我会将正在修改的字符串保存在缓冲区字符串变量中,并根据虚拟kb输入进行更改。完成后,通过txtNumber.Text=bufferedString更新TextBox值;
试着这样做txtNumber.Text +=// your code..
并尝试将CCD_ 2放在该行的起始处。
有几种方法可以做到这一点
当用户打算使用虚拟键盘时,
通过单击复选框或其他什么,您可以使文本框只读
或者您可以在文本框的lost focus
事件中设置CaretIndex
否则,您可以简单地调用AppendText("nextsetofchars")
方法
http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.appendtext.aspx
您还可以将SelectionStart
设置为失去焦点事件中的字符串长度。http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.selectionstart.aspx