我有一个FlowLayoutPanel,我使用自定义UserControl
填充,我在表单顶部有一个TextBox
,我想用它来过滤结果。每个UserControl
存储它的属性,但我不确定如何使用这些属性进行过滤。
例如,假设我的UserControl
包含以下内容:
// snip..
public string Text { get; set; }
public string Description { get; set; }
//snip..
然后我如何从TextBox
获取条目并将其与[usercontrol].Text
和[usercontrol].Description
进行比较?它必须在文本中搜索,而不仅仅是从头开始。
一旦我过滤了适当的结果,我希望那些是唯一可见的。我是否必须将它们全部冲洗并仅使用适用的重建它,或者我可以删除与过滤器不匹配的那些?
我知道这可能是一个非常noob的问题,我只是不知道从哪里开始。有什么想法吗?
答案 0 :(得分:1)
您可以遍历TextBoxChanged
事件中的所有用户控件,如果它与您的条件不符,请将可见性设置为折叠。它看起来像这样:
private textBoxTextChanged(obj sender, EventArgs e)
{
foreach(UserControl uc in flowLayoutPanel.Children)
{
if(!uc.Text.Contains(textBox.Text) && !uc.Description.Contains(textBox.Text))
{
uc.Visibility = Visibility.Collapsed;
}
else
{
//Set Visible if it DOES match
uc.Visibility = Visibility.Visible;
}
}
}