Растягивать заголовки вкладок вместо вкладок в элементе управления вкладками при изменении размера - PullRequest
0 голосов
/ 20 июня 2011

Я владелец рисования ориентированного влево tabcontrol в winforms.

Каждая вкладка имеет фиксированный размер, поэтому, когда пользовательский интерфейс растянут по ширине, я бы хотел, чтобы ширина заголовка вкладки ItemSize увеличивалась соответственно.

    private void tbcTests_Resize( object sender, EventArgs e )
    {
        tbcTests.ItemSize = new Size(
            tbcTests.Width - tbcTests.TabPages[0].Controls[0].Width - tbcTests.Padding.X,
            tbcTests.ItemSize.Height );
    }

Этот код приводит к стекупереполнение.Я подозреваю, что это потому, что изменение размера выполняется с использованием неправильных размеров, что заставляет элемент управления постоянно перерисовывать.Однако я не уверен, как это исправить.Не правильно ли я учел избыточное пространство?

Как мне изменить размер заголовков вкладок и какие размеры использовать?

1 Ответ

2 голосов
/ 21 июня 2011

Изменение свойства ItemSize приводит к повторному запуску события Resize. Вам понадобится вспомогательная переменная для подавления вложенного события. Как это:

private bool busySizing;

private void tbcTests_Resize( object sender, EventArgs e )
{
    if (busySizing) return;
    busySizing = true;
    try {
       tbcTests.ItemSize = new Size(
          tbcTests.Width - tbcTests.TabPages[0].Controls[0].Width - tbcTests.Padding.X,
          tbcTests.ItemSize.Height );
    }
    finally {
       busySizing = false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...