Windows Phone问题 C#
我有一个名为“搜索”的TextBox
和另一个名为“内容”的TextBox
。如果用户在“内容”TextBox
中添加了文字,是否有办法,使用“搜索”TextBox
搜索用户在“内容”TextBox
中输入的内容并突出显示具体文字?
e.g。当用户想要从手机的应用列表中搜索应用时,它会突出显示该特定应用或包含该文本的任何应用。
如果有人有解决方案 请让我知道:))
答案 0 :(得分:2)
要选择TextBox中的文本,this question提供答案,基本上是:
//To select all text
textbox.SelectionStart = 0;
textbox.SelectionLength = textbox.Text.Length;
只需要更多的逻辑来实现你想要的东西。首先从Content
文本框中获取输入,然后在Search
文本框的文本中查找此值的索引。如果值存在(因此索引大于-1),您可以设置SelectionStart
和SelectionLength
。
string content = Content.Text;
int index = Search.Text.IndexOf(content);
if(index > -1)
{
Search.SelectionStart = index;
Search.SelectionLength = content.Length;
}
我尝试在WPF解决方案中使用代码,但它通常可以正常工作,适用于Windows Phone。
SearchTextBox
是TextBox
Content
是TextBlock
只是你知道代码中的所有内容:
var regex = new Regex("(" + SearchTextBox.Text + ")", RegexOptions.IgnoreCase);
if (SearchTextBox.Text.Length == 0)
{
string str = Content.Text;
Content.Inlines.Clear();
Content.Inlines.Add(str);
}
else
{
//get all the words from the 'content'
string[] substrings = regex.Split(Content.Text);
Content.Inlines.Clear();
foreach (var item in substrings)
{
//if a word from the content matches the search-term
if (regex.Match(item).Success)
{
//create a 'Run' and add it to the TextBlock
Run run = new Run(item);
run.Foreground = Brushes.Red;
Content.Inlines.Add(run);
}
else //if no match, just add the text again
Content.Inlines.Add(item);
}
}