如何以编程方式将值发送到文本框?

时间:2013-04-08 07:40:18

标签: c# .net wpf

我有一个文本框,对于那个文本框,我必须从虚拟键盘发送值。 我发送像

txtNumber.Text = txtNumber.Text.Insert(txtNumber.CaretIndex, ((Button)sender).Content.ToString());
txtNumber.CaretIndex += txtNumber.Text.Length;
txtNumber.focus();

问题是用户在键入某个字符后强行将光标放在文本之间,然后按键意味着第一次正确插入值,然后光标需要在那里。

上面的逻辑使它最终保持光标位置。

如何实现这一目标?

4 个答案:

答案 0 :(得分:0)

如果我理解这个问题,我会将字符串保存在缓冲区字符串变量中,并根据虚拟kb输入进行更改。完成此操作后,请通过txtNumber.Text = bufferedString;

更新TextBox值

答案 1 :(得分:0)

使用此代码,我已经检查过了:

        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, "_");
        }

答案 2 :(得分:0)

尝试这样做txtNumber.Text +=// your code.. 并尝试将txtNumber.focus();这一行放在开头。

答案 3 :(得分:0)

有几种方法可以做到这一点 当用户想要他/她想要使用虚拟键盘时,
通过单击复选框或其他内容,您可以只读取文本框 或者您可以在文本框的CaretIndex事件中设置lost focus 否则你只需拨打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