Изменение ширины вертикальной полосы прокрутки в 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;
}
Поэтому я решил спросить аудиторию более высокого интеллекта, чем я, поскольку кто-то, возможно, решил эту проблему и поделится со мной ответом.
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