0

textBoxのプロパティBackColorのsetValueを実行しようとすると、このエラーが発生します
。私が持っているのはformBuilderです。
したがって、formBuilder Runninngを使用して、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)は白で、最初はアルファチャネル-0は透明です。内部の例外は、winformsコントロールで正しいです。WPFにはこの問題はありません。

于 2012-10-27T02:05:54.807 に答える
0

私は解決策を見つけました。私のコードの問題は、実際には次の関数でした。

 Color.FromName(val as String)

期待どおりに動作しません。名前(たとえば白)だけをvalにする必要がありますが、「Color[White]」を使用しました。

したがって、その関数を使用する前に文字列をクリーンアップするだけで、すべてが正常に終了します。

于 2012-10-29T09:50:10.810 に答える