c # определение полосы прокрутки на элементе управления - PullRequest
2 голосов
/ 17 ноября 2010

Как проверить наличие полосы прокрутки в сетке данных в Winforms.

Нечто подобное (псевдокод)

If(datagridview.verticalscrollbar = true)
 do something......

Спасибо.

Ответы [ 2 ]

4 голосов
/ 17 ноября 2010

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

bool scrolling = (dataGridView.DisplayedRowCount(false) != dataGridView.Rows.Count);

(сравнивает общее количество строк с отображаемым в данный момент числом; если они не совпадают, будет видна полоса прокрутки.)

1 голос
/ 17 ноября 2010

В Datagridview есть специальные элементы управления для полос прокрутки - не так, как на обычной панели.

Вы можете сделать что-нибудь. как

private VScrollBar _verticalScrollBar;
private HScrollBar _horizontalScrollBar;

foreach (Control c in _dataGridView.Controls)
    {
        if (c is VScrollBar)
        {
             _verticalScrollBar = c as VScrollBar;
             if (_horizontalScrollBar!=null)
             {
                 break;
             }
        }
        if (c is HScrollBar)
        {
             _horizontalScrollBar = c as HScrollBar;
             if (_verticalScrollBar != null)
             {
                break;
             }
        }
    }

и проверьте, видна ли полоса прокрутки с помощью

if(_verticalScrollBar.Visible==true){
//do something you want when scrollbar is visible
}
else
{
//do something when scrollbar is invisible
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...