Нечетное поведение вертикальной прокрутки DataGridView - PullRequest
1 голос
/ 30 июня 2011

У меня есть окна формы DataGridView.То, что я заполняю и обновляю, используя код ниже, все довольно просто, и все это делается в потоке пользовательского интерфейса.

По какой-то странной причине иногда размер вертикальной полосы прокрутки (которую я сделал видимой только при необходимости) не отражает количество доступных строк.Если я прокручиваю весь путь вниз, я все равно не вижу самые последние строки.Я могу сказать, выбрав строки ниже (и вывести их на экран) с помощью клавиши со стрелкой вниз.

Что может быть причиной для этого.Нужно ли мне что-то вроде BeginUdate или SuspendLayout или что-то еще?Элемент управления встроен посредством взаимодействия в приложение MFC.

Энди, как отследить эту проблему?Это известная ошибка?Кажется, Google так не думает.

Вот код, который я использую.

добавление или вставка строки:

int newRowIndex = insertAt;
if (insertAt < 0 || insertAt > this.dataGridView.Rows.Count)
{
    newRowIndex = this.dataGridView.Rows.Add();
}
else
{
    this.dataGridView.Rows.Insert(insertAt, 1);
}

удаление строки:

this.dataGridView.Rows.Remove(index);

очистка:

this.dataGridView.Rows.Clear();

обновление строки:

this.dataGrid[0, rowIndex].Value = someString;
this.dataGrid[1, rowIndex].Value = someBool;
this.dataGrid[2, rowIndex].Value = someInt;

1 Ответ

1 голос
/ 21 мая 2012

У меня была та же проблема, и я обнаружил, что когда я устанавливал свойство полосы прокрутки DataGridView в коде, а не дизайнер, оно работало просто отлично. Так что у меня было что-то вроде этого:

foreach(Listitem item in list)
{
  //populate grid
}
dataGridView.ScrollBars = ScrollBars.Both;

Понятия не имею, почему это сработало:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...