Как добавить / удалить панель с контентом с помощью c # - PullRequest
9 голосов
/ 16 сентября 2011

У меня есть панель в качестве контейнера, эта панель имеет изображение в качестве фона, внутри панели контейнера, у меня есть еще одна панель, куда я собираюсь поместить некоторую информацию в метки, эта информация со временем изменится, что я хочу, так этопереход, когда новая информация собирается показать, исчезает информационная панель со старой информацией, а затем исчезает в той же панели с новой информацией.Во время исчезновения информационной панели я смогу увидеть фоновое изображение панели контейнера.Обе панели имеют BorderStyle = FixedSingle, также информационная панель имеет цвет заднего фона.

Теперь мой вопрос: есть ли какой-либо способ постепенного увеличения / уменьшения информационной панели и всего содержимого внутри тоже?

Я искал в Интернете и нашел подход к этому, работающий с задним цветом панели, но он не работает вообще, и, кроме того, контент все еще там, так как они просто пытаются исчезнуть свойство backcolor:

Timer tm = new Timer();
    private void Form1_Shown(object sender, EventArgs e)
    {
        tm.Interval = 100;
        tm.Tick += new EventHandler(timer1_Tick);
        tm.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int aa = 0;
        panel2.BackColor = Color.FromArgb(aa, 255, 0, 0);

        aa += 10;
        if (aa > 255)
            tm.Enabled = false;
    }

Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 17 сентября 2011

Я не верю, что вы можете установить непрозрачность отдельных элементов управления. Сама форма имеет непрозрачность, но я не думаю, что вы хотите затемнить весь контроль.

Вы можете создавать собственные элементы управления, поддерживающие непрозрачность ... вот пример: http://www.slimee.com/2009/02/net-transparent-forms-and-controls-with.html

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

Как уже говорили другие, чтобы это выглядело "гладко", может потребоваться много работы. Надеюсь, у кого-то будет лучший ответ.

2 голосов
/ 22 сентября 2011

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

Вы можете добавить или исчезнуть форму при запуске ИЛИ иметь модальную диалоговую форму, которая исчезает или исчезает.

Fade In

    private void FadeIn_Tick(object sender, EventArgs e)
    {
        this.Opacity += .08;
        if (this.Opacity >= 1)
        {
            FadeIn.Stop();
        }
    }

Затухание

    private void FadeOut_Tick(object sender, EventArgs e)
    {
        this.Opacity -= .08; //Decrease opacity
        if (this.Opacity <= 0) //While it is not 0
        {
            FadeOut.Stop(); //Stop!
            this.Close(); //Close the form
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...