我有一个FlowLayoutPanel,我用自定义UserControl
填充,并且在表单顶部有一个TextBox
,我想用它来过滤结果。每个UserControl
都存储其属性,但我不确定如何使用这些属性进行过滤。
例如,假设我的UserControl
包含以下内容:
// snip..
public string Text { get; set; }
public string Description { get; set; }
//snip..
然后,我将如何从TextBox
中获取条目并将其与[usercontrol].Text
和[usercontrol].Description
进行比较?它必须在文本中搜索,而不仅仅是从头开始。
过滤了适当的结果后,我希望这些结果是唯一可见的结果。我是否必须将它们全部刷新并仅使用适用的过滤器重建它,或者我可以只删除与过滤器不匹配的那些?
我知道这可能是一个非常菜鸟的问题,我只是不知道从哪里开始。有什么想法吗?
您可以遍历 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;
}
}
}