“流布局”面板中的筛选器控件

本文关键字:流布局 筛选 控件 | 更新日期: 2023-09-27 18:37:01

我有一个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;
        }
    }
}