Windows Form C#tablelayoutpanel在使用combofilterbox时向上滚动到顶部不更新

时间:2015-10-13 08:39:38

标签: c# tableview windows-forms-designer tablelayoutpanel scroller

我有一个要在表格布局面板中显示的国家/地区列表(一列多行)。存在组合框过滤器以过滤不同的大陆,并且基于过滤的大陆名称,国家列表在表视图内可见并隐藏。但是,当您向上和向下滚动滚动条然后将组合框过滤器应用于其他大陆名称时,滚动条不会向上滚动到顶部。滚动条应返回到表格面板布局内的第一个可见国家/地区控件/组件。

之前有没有人遇到过这个问题。代码看起来像这样。任何帮助都感激不尽。我一直在尝试不同的选项,似乎没有任何对滚动条有任何影响。

<pre>
{
....
 if (scrollDirection == ScrollDirection.Up)
            {
                Control usercontrol = GetFirstVisibleCountryUC();
                if (usercontrol != null)
                {
                    tableLayoutPanelCountries.ScrollControlIntoView(usercontrol);
                    tableLayoutPanelCountries.Invalidate(); //Refresh, Update have tried different options
                }
            }
.....
}
 private Control GetFirstVisibleCountryUC()
        {
            foreach (CountryUC uc in this.tableLayoutPanelCountries.Controls)
            {
                if (uc.Visible)
                {
                    return uc;
                }
            }
            return null;           
        }
</pre>

1 个答案:

答案 0 :(得分:1)

  

滚动条应该返回到表格面板布局中的第一个可见国家/地区控件/组件。

如果这正是您所需要的,那么以下内容应该完成工作

tableLayoutPanelCountries.AutoScrollPosition = new Point(0, 0);