Pergunta

Estou tentando criar uma forma semi-transparente que é exibida em um painel. Posso exibir o formulário no painel, mas a propriedade Opacity não funciona e o formulário não é transparente.

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();
}

Alguma idéia de como posso lidar com isso? Obrigado por suas respostas!

Foi útil?

Solução

O WinForms suporta apenas a transparência parcial para formulários de nível superior. Se você deseja criar um aplicativo com elementos de interface do usuário parcialmente transparentes, você precisa usar o WPF ou manipular todo o desenho. Desculpe a ser o portador de más notícias.

Outras dicas

Seu formulário é adicionado como um controle infantil do painel1, que é filho da forma principal, que é de opacidade padrão = 1.

Para ver a opacidade no trabalho, tente o seguinte:

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();
}

Eu acho que você quer que o painel pareça semi-transparente, você deve usar outro método e trabalhar com o próprio formulário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top