FlowLayoutPanel中的过滤器控件?

时间:2012-06-14 00:05:47

标签: c# search user-controls flowlayout

我有一个FlowLayoutPanel,我使用自定义UserControl填充,我在表单顶部有一个TextBox,我想用它来过滤结果。每个UserControl存储它的属性,但我不确定如何使用这些属性进行过滤。

例如,假设我的UserControl包含以下内容:

// snip..
public string Text { get; set; }
public string Description { get; set; }
//snip..

然后我如何从TextBox获取条目并将其与[usercontrol].Text[usercontrol].Description进行比较?它必须在文本中搜索,而不仅仅是从头开始。

一旦我过滤了适当的结果,我希望那些是唯一可见的。我是否必须将它们全部冲洗并仅使用适用的重建它,或者我可以删除与过滤器不匹配的那些?

我知道这可能是一个非常noob的问题,我只是不知道从哪里开始。有什么想法吗?

1 个答案:

答案 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;
        }
    }
}