ilostmyid2 Ответов: 1

Максимизация панели tablelayoutpanel


В TableLayoutPanel мне нужно развернуть панель, дважды щелкнув по ней. Я имею в виду, что он становится одним панельным управлением, а другие временно скрываются. В этом случае элемент управления table layout panel получает элемент управления, который включает только одну панель или показывает только одну панель, которая заполняется внутри него. Затем, если панель, которая теперь максимизируется, будет дважды щелкнута снова, исходная таблица панелей появится снова. Есть ли для этого какой-то прямой путь? Что я могу сделать, чтобы управлять им лучше?

Что я уже пробовал:

Теперь я вручную удаляю элементы управления из элемента управления TableLayoutPanel, а затем воссоздаю его после перехода к восстановлению. Но у этого метода есть побочные эффекты, которых мне нужно избегать.
В следующей попытке я изменил код на:
private int _columnCount, _rowCount;

private void player_DoubleClicked(object sender, IDisplayable displayable)
{
    if (tableLayout.ColumnCount == 1 && tableLayout.RowCount == 1)
    {
        tableLayout.ColumnCount = _columnCount;
        tableLayout.RowCount = _rowCount;
        foreach (var ctrl in tableLayout.Controls)
        {
            var panel = ctrl as UserControl;
            if (ctrl != sender)
                panel.Visible = true;
        }
    }
    else
    {
        foreach (var ctrl in tableLayout.Controls)
        {
            var panel = ctrl as UserControl;
            if (ctrl != sender)
                panel.Visible = false;
        }
        _columnCount = tableLayout.ColumnCount;
        _rowCount = tableLayout.RowCount;
        tableLayout.RowCount = 1;
        tableLayout.ColumnCount = 1;
    }
}

1 Ответов

Рейтинг:
2

Richard MacCutchan

Вы можете использовать Control.Visible Свойство (System.Окна.Формы) | Microsoft Docs[^] чтобы показать или скрыть это.


ilostmyid2

это не меняет размер панели, которая остается показанной

Richard MacCutchan

Ну, вам также нужно добавить код, чтобы изменить его размер, когда он становится видимым.

ilostmyid2

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

Richard MacCutchan

Да, использование свойства visible должно привести к этому. Если вы просто измените размер панели внутри вашего окна, это повлияет на размер всех остальных, но не закроет их. Вам нужно переместить развернутую панель так, чтобы она закрывала все остальные элементы управления. Затем, когда вы закроете его или сделаете невидимым, другие будут показаны снова.

ilostmyid2

Я обновил вопрос. Пожалуйста, обратитесь к коду. Это работает частично. Когда я дважды щелкаю панели в первом ряду, они разворачиваются, но когда я нажимаю на панели 2-го ряда, они расширяются во втором ряду. Я не знаю, почему они не максимизируются во всей панели!

Richard MacCutchan

Извините, но у меня нет ответа. Возможно, мои переживания были связаны с использованием более простой схемы.

ilostmyid2

не может быть проще, чем макет 2х2 ;D

Richard MacCutchan

Верно, но это не имеет никакого отношения к вашей проблеме.