1

VS .NET 2010 アルティメット エディションを使用しています。(カスタム) コンポーネントのいくつかのプロパティの奇妙な動作に遭遇しました。それが私の問題なのか IDE の問題なのかを知りたいです。2 つの画像を投稿します。1 つ目はプロパティを編集する前、Dot->Size->Height を 5 から 20 に変更し、2 つ目は Enter キーを押して新しい値を変更した後です。

これは私のプロパティを編集する前です

そして、これはプロパティを編集してEnterキーを押した後です

これで、「Spacing」プロパティ (タッチではありません) が 2 倍になっていることがわかります:) コンポーネントは設計時と実行時の両方で正常に動作するため、この奇妙な側面を除いてすべてが問題ありません。[+] 記号をクリックすると、通常の状態に戻り、プロパティがキー表示されて更新されます。

どうしたの ?

PS。TypeConverter クラスの CreateInstance 関数に問題があると思われます。これらの関数にコメントすると、プロパティは問題ありませんが、もちろん、設計時にコンポーネントが更新されないためです (フォームの別の場所をクリックするまで)。

関数は次のとおりです。

Public Overrides Function GetCreateInstanceSupported(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
  Return True
End Function

Public Overrides Function CreateInstance(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal propertyValues As System.Collections.IDictionary) As Object
  Dim da As New DotAttributes With
                  {
                    .Color = CType(propertyValues("Color"), Color),
                    .Shape = CType(propertyValues("Shape"), DotShapes),
                    .Size = CType(propertyValues("Size"), Size),
                    .Spacing = CType(propertyValues("Spacing"), Size)
                  }
  Return da
End Function
4

0 に答える 0