C # прозрачная форма в панели - PullRequest
0 голосов
/ 23 октября 2009

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

private void button1_Click(object sender, EventArgs e)
{
      Form fr = new Form();
      fr.FormBorderStyle = FormBorderStyle.None;
      fr.BackColor = Color.Black;
      fr.TopLevel = false;
      fr.Opacity = 0.5;
      this.panel1.Controls.Add(fr);
      fr.Show();
}

есть идеи, как я могу справиться с этим? Спасибо за ваши ответы!

Ответы [ 2 ]

3 голосов
/ 23 октября 2009

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

0 голосов
/ 23 октября 2009

Ваша форма добавлена ​​в качестве дочернего элемента панели управления1, которая является дочерней по отношению к основной форме со значением непрозрачности по умолчанию = 1.

Чтобы увидеть непрозрачность на работе, попробуйте это:

private void button1_Click(object sender, EventArgs e)
{
    Form fr = new Form();
    fr.FormBorderStyle = FormBorderStyle.None;
    fr.BackColor = Color.Blue;
    fr.TopLevel = false;
    //fr.Opacity = 0.5;
    this.Opacity = 0.5; // add this
    this.panel1.Controls.Add(fr);
    fr.Show();
}

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

...