【发布时间】:2015-10-23 23:25:41
【问题描述】:
在 Windows Store App(WP 8.1)中获取 TextBox 的插入符号索引时遇到了一些问题。
按下按钮时,我需要在文本中插入特定符号。
我试过这个:
text.Text = text.Text.Insert(text.SelectionStart, "~");
但是此代码将符号插入文本的开头,而不是插入符号所在的位置。
更新
感谢Ladi,我更新了我的代码。但现在我遇到了另一个问题:我正在构建 HMTL 编辑器应用程序,所以我的默认 TextBlock.Text 是:
<!DOCTYPE html>\r\n<html>\r\n<head>\r\n</head>\r\n<body>\r\n</body>\r\n</html>
因此,例如,当用户将符号插入第 3 行时,符号会在插入符号前插入 2 个符号;插入符号在第 4 行之前的 3 个符号,依此类推。将符号插入第一行时,插入工作正常。
这是我的插入代码:
Index = HTMLBox.SelectionStart;
HTMLBox.Text = HTMLBox.Text.Insert(Index, (sender as AppBarButton).Label);
HTMLBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);
HTMLBox.Select(Index+1,0);
那么如何解决呢?
我猜换行符会惹麻烦。
【问题讨论】:
-
您的代码有效(我刚刚检查过)。在尝试访问 text.SelectionStart 之前,您是否有机会更改文本?因为如果你这样做,当你设置 text.Text 时,text.SelectionStart 将被重置为 0。
-
@Ladi 请查看更新
标签: c# xaml windows-runtime windows-phone-8.1 winrt-xaml