如何获取文本框中最新输入的字符?

8
我想知道如何获取TextBox中最新输入的字符,而不是字符串的末尾。 例如,我输入了这个:

This i a test.

但我忘记了添加 's',所以我把手指移到 'i' 上并添加 's':

This is a test.

那么,我该如何获取 's'?
我希望能够以字符或字符串形式获取它,但我不知道怎么做...
希望我的问题已经表述清楚。

每次输入一个字符时,将字符串转换为字符数组,将旧字符串保留在字符数组中,并找到第一个不匹配的字符索引。例如,对于提供的字符串,索引6处的旧字符串为“ ”,而新字符串为索引6处的“s”,因此您知道这是插入的字符。 - Jonathan
嗯,对我来说这似乎是一个人工智能问题,而不是一个编程问题。 - Soner Gönül
如果Windows Phone 7或8仍然支持复制粘贴(6支持),您希望您的应用程序显示什么,最后输入的字符还是粘贴的数据? - C.Evenhuis
4个回答

8
如果您想要获取最后一个被写入的字符,则需要将TextBox订阅到KeyDown事件中:
C#:
textBox.KeyDown += textBox_KeyDown;

XAML:

<TextBox x:Name="textBox" KeyDown="textBox_KeyDown" />

然后:

private void textBox_KeyDown(object sender, KeyEventArgs e)
{
    /* e.Key contains the keyboard key associated with the event. */
}

如果你想获取最后一个写入的字符的索引,那么这就更加复杂了。其中一种解决方案可能是跟踪鼠标在 TextBox 中的位置和光标。


1
new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress)this.textBox1_KeyPress 之间有什么区别? - user2032433
在C#中没有区别。我编写了设计师的代码,其中使用了完全限定名称。 - Ryszard Dżegan
谢谢!实际上,我也需要索引。我们如何在WP中跟踪光标位置? - TDK
1
我找到了!只需要:Textbox.SelectionStart,我就可以获取光标位置了! - TDK
@TDK 如果您对这个问题有任何想法,请帮助我,这就像是您的问题。http://stackoverflow.com/questions/29114870/get-the-latest-entered-word-in-textbox-windows-phone-8 - sohan vanani
显示剩余2条评论

4

1
它们都是有效的事件。KeyPress 更适合此操作,因为它不会对非字符键引发。http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress.aspx - user2032433
2
问题是针对Windows手机而不是Windows表单提出的。在Windows Phone中,Keypress不存在。可用的事件是KeyDown。 - Manish

0

使用此代码获取插入到文本框中的最后一个字符

 private void Textbox1_KeyDown(object sender, KeyEventArgs e)
            {
                lastchar_inserted = e.KeyValue.ToString(); // global string variable
            }

0

看一下,这可能会有所帮助。

要获取文本的最后一个字符,另一个建议是附加一个

"\n" (nameTextbox.Append("\n"))

然后,使用

int lineCount = nameTextbox.Lines.Count();

最后,使用方法

nameTextbox.GetFirstCharIndexFromLine(lineCount)

在那里,您可以将(index-1)(或其他内容,要小心并使用较小的文本进行测试)作为最后一个字符的索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接