WinForms: правильный способ изменить количество строк в TableLayoutPanel - PullRequest
1 голос
/ 27 октября 2008

Я пытаюсь программно изменить количество строк в TableLayoutPanel (иногда это должно быть четыре, иногда пять, и редко шесть).

К сожалению, изменение количества строк не приводит к синхронизации коллекции RowStyles, поэтому вы не сможете установить высоту вновь добавленных строк. Следующий тестовый код демонстрирует этот факт:

private void button1_Click(object sender, EventArgs e)
{
    //TableLayoutPanels start with 2 rows by default.
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

    //Cannot remove rows
    tableLayoutPanel1.RowCount = 1;
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

}

Второе утверждение не выполняется.

private void button2_Click(object sender, EventArgs e)
{
    //TableLayoutPanels start with 2 rows by default.
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

    //Cannot add rows
    tableLayoutPanel1.RowCount = 6;
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);
}

Второе утверждение не выполняется.

Так каков правильный программный способ установить свойство RowCount для TableLayoutPanel?

Ответы [ 2 ]

4 голосов
/ 27 октября 2008

Об этой проблеме сообщили Microsoft в 2005 году, и они признают, что это ошибка , но они " все еще оценивают наши варианты здесь " Microsoft решила не исправлять ее (" Закрыто ").

Строки TableLayoutPanel и строки RowStyles не соответствуют.

Описание

Когда вы создаете tableLayoutPanel, и новые строки создаются (либо добавление строк в программу или настройку свойство RowCount), новые RowStyles не добавляются в элемент управления. Кроме того, если я добавлю новые стили строк, количество рядов увеличивается, но не на тот же номер: если я начну с двумя строками и двумя строками Rowcount до 4, а затем добавить два RowStyles (в режиме конструктора), Rowcount установил на 6. Кажется, больше интуитивно понятен для ординальности Коллекция RowStyles, чтобы соответствовать текущий RowCount.

Комментарии

Опубликовано Microsoft 24.10.2005 в 18:07

Эта проблема была возобновлена, когда мы начинаем планировать следующую версию Visual Studio. В ближайшие месяцы мы пересмотрим отзывы, которые были ранее отложены. Мы приветствуем ваши комментарии и участие в этом процессе.

Опубликовано Microsoft 27.06.2005 в 6:49

Суб-статус Microsoft теперь "Воспроизводится"

Спасибо, что сообщили об этой ошибке, у нас есть удалось повторить эту проблему и исследования.

Спасибо, Прабху, продукт VS2005 Team.

Опубликовано Microsoft 27.06.2005 в 17:55

Спасибо за сообщение об этой проблеме. Это особенность нашего времени выполнения объектная модель, которая не переводит хорошо спроектировать время. Во время выполнения RowCount и ColCount действительно означают minRowCount и minColCount в терминах autogrow, потому что строки / столбцы не нужен поддерживающий стиль. На дизайн раз мы пытаемся упростить это и сохранить почти 1: 1 соответствие стили и строки / столбцы. В этом случае, вы видите по времени выполнения проекта поведение. У нас уже есть ошибка отслеживание этой проблемы и до сих пор оценивая наши варианты здесь. Спасибо еще раз за вклад в улучшение Уидби.

Сообщение от Microsoft 7.06.2005 в 15:43

Спасибо за сообщить об этой проблеме. Это особенность в нашем объекте во время выполнения модель, которую мы выбрали, чтобы не адрес во время разработки. Во время выполнения RowCount и ColCount действительно означают minRowCount и minColCount в терминах autogrow, потому что строки / столбцы не требуется поддерживающий стиль. На дизайн время, которое мы обычно пытаемся упростить и вести переписку почти 1: 1 между стилями и строками / столбцами. в случай rowSpan или colSpan на столе панель layot ​​с автогроу можно получить в состояние, когда ряды / rowcount / rowstyles находятся вне синхронизации. Чтобы избежать этого, просто добавьте столбцы / строки вам нужно сначала, а затем установить свойство control * span. Спасибо.

Опубликовано Microsoft 24.10.2005 в 18:07

Эта проблема была возобновлена, поскольку мы начать планирование следующей версии Visual Studio. В ближайшие месяцы мы пересмотрим отзывы, которые были ранее отложено. Мы приветствуем ваши комментарии и участие в этом процесс.

- Visual Studio Team

0 голосов
/ 27 октября 2008

Вы пытались создать новый RowStyle и затем добавить его, используя метод tableLayoutPanel1.RowStyles.Add?

...