2012-10-26 62 views
0

当我尝试为textBox的属性BackColor设置值时出现此错误
我所拥有的是一个formBuilder。
所以用我的formBuilder Runninng我可以创建一个表单添加一个TabControl,并在tabControl一个groupBox。在GroubBox里面我有一些文本框。
对于每个TextBox,我将它们的属性(包含值)保存在xml中。
当我试图重新从XML形式(在另一个项目),我使用该代码:异常已被调用的目标抛出 - 对于属性BackColor

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 

所以对一些文本框我有作为字符串值:颜色[白色]
和转换后,我有一个颜色:“{名称=颜色[白色],ARGB =(0,0,0,0)}”
当我试图将此颜色值设置为属性BackColor我得到异常:
异常已被调用的目标引发。
和的InnerException: 控制不支持透明背景颜色

任何想法解决这个问题?

回答

0

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

Color.FromName(val as String) 

为expected.I不工作应该作为VAL只有名称(例如白色),但我有“颜色[白]”

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

0

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

相关问题