控件不支持透明背景颜色。 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
的可用选项。这让我认为 .SetStyle
是 c++
代码,而不是 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
我编写了以下代码来从 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
的可用选项。这让我认为 .SetStyle
是 c++
代码,而不是 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