0

当我尝试为 textBox 的属性 BackColor 设置值时出现该错误
我拥有的是一个 formBuilder。
因此,通过我的 formBuilder 运行,我可以创建一个添加 TabControl 的表单,并在 tabControl 中创建一个 groupBox。在 GroubBox 内,我有一些文本框。
对于每个 TextBox,我将它们的属性(带有值)保存在 xml 中。
当我尝试从 xml(在另一个项目中)重新创建表单时,我使用该代码:

   For Each cntProperty As XElement In elem.Elements
     Dim propertyName As String = cntProperty.Name.ToString
     Dim targetProperty As PropertyInfo = parentControl.GetType().GetProperty(propertyName)
     If targetProperty IsNot Nothing Then
       Dim propType As Type = FindType(targetProperty.PropertyType.ToString)
       Dim convertedVal = ConvertValue(cntProperty.Value, targetProperty.PropertyType)
       parentControl.GetType().GetProperty(propertyName).SetValue(parentControl, convertedVal, Nothing)'Here I get the exception
     End If
    Next

parentControl 是我要重新创建的控件(在这种情况下为 textBox) FindType 是一个返回属性类型的函数(工作正常) ConvertValue 是将字符串从 xml 转换为适当类型的函数 对于我使用的颜色这个功能:

   Color.FromName(val)'val is the string value from the xml

因此,对于某些文本框,我将其作为字符串值: Color [White]
并且在转换后我有一个颜色:“{Name=Color [White], ARGB=(0, 0, 0, 0)}"
当我尝试将此颜色值设置为属性 BackColor 我得到异常:
调用的目标已引发异常。
和innerException: 控件不支持透明背景色

有什么想法可以解决这个问题吗?

4

2 回答 2

0

aRGB(255, 255, 255, 255) 是白色的,第一个是 alpha 通道 - 0 是透明的。内部异常对于 winforms 控件是正确的。WPF 没有这个问题。

于 2012-10-27T02:05:54.807 回答
0

我找到了解决方案。我的代码中的问题实际上是函数:

 Color.FromName(val as String)

没有按预期工作。我应该只有名称(例如白色),但我有“颜色 [白色]”

所以我只是在使用该函数结束之前清理我的字符串,一切都很好。

于 2012-10-29T09:50:10.810 回答