Как я могу установить панель, чтобы всегда быть на вершине при изменении вкладок в C#?

У меня есть программа с двумя вкладками в TabController, у меня также есть панель, которую я хочу всегда иметь впереди. Несмотря на то, на какой вкладке я нахожусь. Я попытался установить панель на BringToFront(), но это не похоже на работу, когда я меняю вкладку. Любые предложения, как решить эту проблему?

3 ответа

Решение

Если Panel содержится в TabPage, вам придется вручную переключать ее на текущую вкладку при каждом изменении вкладки, а затем вызывать BringToFront().

Альтернативой может быть сделать Panel так, чтобы она содержалась непосредственно в форме, но перед TabControl (как будто она "плавает" над ней). Тогда он просто останется там. Вам нужно было бы либо вручную поиграть со свойством Panel (), чтобы получить его правильно (вы не могли перетащить его на TabPage, как тогда, когда он попадет в него), либо вы могли бы правильно расположить его с помощью кода в Load() событие формы.

Редактировать:

Например, если вы правильно разместили "panel1" в TabPage во время разработки, вы можете переключить его на форму, используя следующий код:

    private void Form1_Load(object sender, EventArgs e)
    {
        Point pt = panel1.PointToScreen(new Point(0, 0));
        panel1.Parent = this;
        panel1.Location = this.PointToClient(pt);
        panel1.BringToFront();
    }

Установите панель вне tabcontroller и установите его стиль закрепления. Также установите dockstyle tabcontroller.

Панель принадлежит определенной вкладке. Когда вы переходите на другую вкладку и вызываете BringToFront(), она ничего не делает, потому что вы сейчас находитесь на другой вкладке. Так что вам нужно обойти это, исправив код. Есть два способа:

1) Вы можете разместить эту панель на каждой вкладке во время разработки (если вам не нужны некоторые общие данные на этой панели).

2) Вам следует подключить событие OnTabPageChanged и переместить панель со старой вкладки на страницу, на которую вы переключились (если вам нужны некоторые общие данные на этой панели). Я думаю, что это ваш случай.

Другие вопросы по тегам