【问题标题】:How to send the value to textbox programatically?如何以编程方式将值发送到文本框?
【发布时间】:2013-04-08 07:40:18
【问题描述】:

我有一个文本框,我必须从我设计的虚拟键盘发送值到那个文本框。 我发送喜欢

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

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

上面的这个逻辑使它最终停留在光标位置。

如何做到这一点?

【问题讨论】:

    标签: c# .net wpf


    【解决方案1】:

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

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

    【讨论】:

    • 是的,这是可能的。但是说“shan”用户键入,然后将光标放在 h 的位置并再次键入意味着它应该只进入那个位置。但是最后会添加简单的 txtNumber.Text += 值。这就是问题所在。
    • 我不明白你为什么要这样做,因为textbox已经有这个属性可以在光标位置插入字符。
    • 如果我们把 textNumber.Text += value 它会如何插入到特定的位置?
    • textNumber_Click 事件属于文本框?
    • 好的。谢谢。没关系。
    【解决方案2】:

    如果我理解这个问题,我会将正在修改的字符串保存在缓冲区字符串变量中,并根据虚拟 kb 输入进行更改。完成后,将 TextBox 值更新为 txtNumber.Text = bufferedString;

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        有几种方法可以做到这一点。
        当用户打算使用虚拟键盘时,
        通过单击复选框或其他内容,您可以将文本框设为只读。
        或者您可以在文本框的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

        【讨论】:

          猜你喜欢
          • 2011-06-12
          • 2014-02-18
          • 1970-01-01
          • 1970-01-01
          • 2013-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多