0

У меня есть список стран, которые будут отображаться внутри панели макета таблицы (один col x many rows). Фильтр combobox существует для фильтрации разных континентов и на основе отфильтрованного континента, список стран становится видимым и скрытым внутри представления таблицы. Однако, когда вы прокручиваете скроллер вверх и вниз, а затем применяете фильтр со списком к другому континенту, скроллер не прокручивается вверх. Скроллер должен вернуться в первый видимый элемент управления страной/компонент внутри макета панели.Windows Form C# tablelayoutpanel прокрутка вверх, не обновляется при использовании combofilterbox

Неужели кто-то испытал этот вопрос раньше. Код выглядит примерно так. Любая помощь будет высоко ценится. Я пробовал разные варианты, ничто не влияет на скроллер.

<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> 
+0

Что-то здесь не так. Можете ли вы опубликовать небольшой, но полный код, который показывает проблему. –

ответ

1

Скроллер должен вернуться к первой видимому управлению страной/компоненте внутри макета таблицы панели.

Если это именно то, что вам нужно, то следующий должен сделать работу

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

Благодарим за помощь. Он по-прежнему не влияет на скроллер. Скроллер не вернулся к первому видимому элементу управления/компоненту. – divspec

+0

Это сработало. Я имею в виду, что я понял, что у меня есть другая панель, которая была скрыта под ней, и что панель автопрокрутки панели была установлена ​​в true. Поэтому я использовал

panelCountries.AutoScrollPosition = new Point(0, 0);
divspec

+0

Большое спасибо за помощь. – divspec