如何从C#中的WinForm.Opacity中排除控件

Ofe*_*ear 3 .net c# winforms

我有一个表单,我将它的不透明度设置为50%,如下所示:

this.Opacity = 0.5D; <--this==Form
Run Code Online (Sandbox Code Playgroud)

我的问题是表格上的所有内容都是不透明度为50%

我在表单上有两个按钮,我希望它们没有Opacity.

我知道this.Opacity包括所有控件和由于某种原因的图形

我的问题是,如何排除控件的不透明度?

示例图片: 例2

谢谢!

Moh*_*hin 5

由于Control没有Opacity属性和加号,大多数控件都不支持透明色,那么一个可行的解决方案就是:

  1. 创建一个Form被调用的MainForm并放置您要排除的所有控件.

    1.1将两者BackColorTransparencyKey属性设置MainForm为相同的颜色,例如Color.Red

  2. 创建另一个名为的表单,TransparentForm并放置必须变为透明的所有控件.设置ShowInTaskbar属性False.

  3. MainForm Load事件中显示TransparentForm并发送回来.

    private void MainForm_Load(object sender, EventArgs e)
    {
        TransparentForm form = new TransparentForm();
        form.Opacity = 0.5D;
        form.Show();
        form.SendToBack(); 
    }
    
    Run Code Online (Sandbox Code Playgroud)

    在此输入图像描述

两种形式的控件的位置必须是这样的,当组合时,它显示适当的用户界面.