Изменение ширины вертикальной полосы прокрутки в dataGridView



Я разрабатываю приложение для сенсорного экрана. Меня попросили увеличить размер полос прокрутки, чтобы пользователи могли их использовать. До сих пор мне не удалось разобраться в этом. Я читал, что если вы увеличите ширину полосы прокрутки окна MainForm, то dataGridView унаследует ее. Я попробовал несколько вещей, но до сих пор не смог заставить его работать.



Два ближайших способа, которые я пробовал, - это



1) Когда я строю сетку, я добавляю следующее



 foreach (Control ctrl in dataGridView1.Controls)
if (ctrl.GetType() == typeof(VScrollBar))
ctrl.Width = 86;


К сожалению, это кажется, что он получает ширину 17, но не может переопределить ее с этим новым значением 86.



Далее я помещаю это в то место, где я строю основную форму все еще не хорошо вертикальная полоса прокрутки все еще выглядит так же.



2) я обнаружил, что могу добавить полосу прокрутки из окна инструментов. Немного прогресса здесь, пока я не попытаюсь подключиться к dataGridView. Этого я не могу сделать. У меня есть событие, поэтому каждый раз, когда оно перемещается, я должен иметь возможность перемещать сетку. Ниже прокомментировано несколько пунктов, которые я использую, чтобы убедиться, что я получение ценности.



 private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
//MessageBox.Show(vScrollBar1.Value.ToString());
// MessageBox.Show(SystemInformation.VerticalScrollBarWidth.ToString());
// CalculateVerticalScrollbarWidth() * 4;
}


Поэтому я решил спросить аудиторию более высокого интеллекта, чем я, поскольку кто-то, возможно, решил эту проблему и поделится со мной ответом.
692   1  

1 ответ:

Вы можете отключить вертикальную полосу прокрутки DGV:

dataGridView1.ScrollBars = ScrollBars.Horizontal;

И добавьте вместо него элемент управления VerticalScrolllBar. Убедитесь в том, чтобы сохранить его размер в snych, а также его Maximum:

vScrollBar1.Maximum = dataGridView1.RowCount;

Для прокрутки кода синхронизации оба Scroll события:

private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
    vScrollBar1.Value = e.NewValue;
}


private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
   dataGridView1.FirstDisplayedScrollingRowIndex = e.NewValue;
}

Введите описание изображения здесь

Comments

    Ничего не найдено.