控件不支持透明背景颜色。 VB.NET

Control does not support transparent background colors. VB.NET

我编写了以下代码来从 ini 文件加载背景颜色:

Form1.elect1Label.BackColor = decipherColor(ReadIni.ReadIni("save.ini", "Default", "bg"))
End Sub

Function decipherColor(ByVal undecipheredColor As String) As Color
    Dim deciphered As String = undecipheredColor.Split(New Char() {"[", "]"})(1)
    decipherColor = System.Drawing.Color.FromName(deciphered)
    Console.WriteLine(System.Drawing.Color.FromName(deciphered))
End Function

请注意 ReadIni.ReadIni("save.ini', "Default", "bg") = Color [A=255 R=255 G=255 B=254]。 decipherColor 函数用于将 Color [RED] 形式的颜色转换为控件可以识别的颜色,因此我可以 control.backcolor = decipherColor("Color [RED]").

而不是 control.backcolor = Color.red

这个函数工作正常,Form1.elect1Label.BackColor变成了255,255,255,254(这是form1的transparencyKey)但是它只会在Windows下这样做 7.当运行代码在 Windows 10 下,我收到

Control does not support transparent background colors.

我发现这是一个解决方案:this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);,但是 .SetStyle 不是 Form1.elect1Label 的可用选项。这让我认为 .SetStylec++ 代码,而不是 vb.net.

谁能帮我解决 Windows 10 下的这个错误?

我最终通过以下方式修复了它:

...
Try 'botch to fix issue #2
    Form1.elect1Label.BackColor = decipherColor(ReadIni.ReadIni("save.ini", "Default", "bg"))
    Form1.elect2Label.BackColor = decipherColor(ReadIni.ReadIni("save.ini", "Default", "bg"))
    Form1.BackColor = decipherColor(ReadIni.ReadIni("save.ini", "Default", "bg"))
Catch ex As Exception
    Form1.elect1Label.BackColor = fixARGB(ReadIni.ReadIni("save.ini", "Default", "bg"))
    Form1.elect2Label.BackColor = fixARGB(ReadIni.ReadIni("save.ini", "Default", "bg"))
    Form1.BackColor = fixARGB(ReadIni.ReadIni("save.ini", "Default", "bg"))
End Try

End Function

Function fixARGB(ByVal brokenARGB As String) As Color
    Dim halfwayThere As String = brokenARGB.Split(New Char() {"[", "]"})(1)
    Dim noA As String = Replace(halfwayThere, "A=", "")
    Dim noR As String = Replace(noA, "R=", "")
    Dim noG As String = Replace(noR, "G=", "")
    Dim clean As String = Replace(noG, "B=", "")
    Dim sept As String() = clean.Split(New Char() {","c})
    fixARGB = Color.FromArgb(sept(0), sept(1), sept(2), sept(3))
End Function