C#面板中的透明形式

C#面板中的透明形式,c#,.net,winforms,opacity,C#,.net,Winforms,Opacity,我正在尝试创建一个半透明的窗体,它显示在面板中。我可以在面板中显示窗体,但“不透明度”属性不起作用,窗体是不透明的 private void button1_Click(object sender, EventArgs e) { Form fr = new Form(); fr.FormBorderStyle = FormBorderStyle.None; fr.BackColor = Color.Black; fr.TopLevel = fals

我正在尝试创建一个半透明的窗体,它显示在面板中。我可以在面板中显示窗体,但“不透明度”属性不起作用,窗体是不透明的

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();
}
你知道我怎么处理吗?
谢谢你的回答

您的窗体被添加为panel1的子控件,panel1是默认不透明度为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();
}

我猜您希望面板看起来是半透明的,您必须使用另一种方法并处理窗体本身。

您的窗体被添加为panel1的子控件,panel1是主窗体的子控件,默认不透明度为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();
}

我猜您希望面板看起来是半透明的,您必须使用另一种方法并处理表单本身。

Winforms仅支持顶级表单的部分透明。如果要创建具有部分透明UI元素的应用程序,则需要使用WPF,或者自己处理所有图形。很抱歉带来了坏消息。

Winforms只支持顶级表单的部分透明性。如果要创建具有部分透明UI元素的应用程序,则需要使用WPF,或者自己处理所有图形。很抱歉给你带来了坏消息