2

我正在寻找一种基于Windows.UI.Xaml.Controls.TextBox控件内的搜索词突出显示(而不是选择)单词的方法。

似乎没有任何方法可以覆盖文本呈现行为?这可以用文本框控件完成吗?

编辑:我最初试图使用 RichEditBox,但在粘贴我试图阻止的格式化文本时遇到了问题(我可以清除格式的唯一事件是 TextChanged,这似乎有点晚了)。我还真的需要更多地控制高光的渲染

4

3 回答 3

2

文本框在格式和文本选择方面非常有限。

您可能希望使用 RichTextBox 控件而不是 TextBox,因为它为您提供了更大的选择和格式化功能,可以更轻松地突出显示多个术语。

这是一个快速入门: http: //www.devx.com/dotnet/Article/34644

于 2012-10-01T02:05:08.533 回答
1

我有相同的问题。但万一你不知道,我还是会发布这个(这不是一个完整的答案,但可能会让你开始。)

您可以使用以下方法突出显示单词:

int indexOfFoundKeyword = 1;
int lastIndexOfFoundKeyword = 12;
txtbox.SelectionStart = indexOfFoundKeyword;
txtbox.SelectionLength = lastIndexOfFoundKeyword;

如果将它放在按钮单击事件中,然后键入大约 20 个字符并单击按钮,您将看到可以突出显示 Metro 文本框中的单词。我遇到的问题是找到 found 关键字的开头和结尾,以便我知道要分配哪些值SelectionStartSelectionLength如果我正确理解了您的问题,我认为这也是您遇到的问题。

更新

好的,这似乎有点喜怒无常,但大部分时间都有效。(并且在它起作用时准确):

    // find the word 'jason'.
    string word = "jason";
    int a, b;
    a = genericBox.Text.IndexOf(word);
    b = word.Length;

    genericBox.SelectionStart = a;
    genericBox.SelectionLength = b;

如果您要做的只是找到一些文本,然后选择它,那么这证明它可以完成。现在我知道这不是最好的方法,但这是我能够让这样的东西在 Metro 应用程序的纯 TextBox 中工作的唯一方法。

于 2013-01-17T13:48:10.677 回答
0

也许您可以创建一个基于 TextBox 控件的控件,或者完全创建一个自定义控件。请参阅此处此处获取更多帮助。

于 2012-10-01T05:45:54.023 回答