如何用程序将值发送到文本框

本文关键字:文本 何用 程序 | 更新日期: 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