2017-02-14 7 views
0

私は自分のアプリケーションのカスタム設定を行っています。プロパティのグリッドに表示するパブリックプロパティとしてすべての設定を保持するクラスを作成しました。 set/getは、カスタム関数を使用してデータベースへの書き込みと読み取りを行います。これはすべて私のニーズに適しています。私は、プロパティグリッドに表示する必要があると思うように色を表示するのに苦労しています。プロパティグリッドは、既知の色に対してもRGB値のみを使用します。プロパティグリッドコントロールで既知の色が表示されないのはなぜですか?

プロパティグリッドにRGB値の代わりに既知の色を表示する方法はありますか?

ここは自分の設定クラスのプロパティです。

<CategoryAttribute("Signature Capture"), _ 
    DescriptionAttribute("Sets the Pen color"), _ 
    DisplayName("PenColor"), _ 
    BrowsableAttribute(True), _ 
    ReadOnlyAttribute(False), _ 
    DefaultValueAttribute(GetType(Color), "Black"), _ 
    RefreshProperties(RefreshProperties.All)> _ 
    Public Property SignatureCapturePenColor() As Color 
     Get 
      Dim myset As New mySettings 
      Return Color.FromArgb(Convert.ToInt32(myset.GetSetting("SignatureCapturePenColor", mySettings.e_Scope.Tech))) 
     End Get 
     Set(ByVal value As Color) 
      Dim myset As New mySettings 
      myset.SetSetting("SignatureCapturePenColor", value.ToArgb, mySettings.e_Scope.Tech) 
      Dim ncSet As New ncSettings 
      ncSet.NotifyPropertyChanged() 
     End Set 
    End Property 

これは、プロパティグリッドがどのように見えるかの例である:これは、代わりに「0,0,0」の「黒」として表示されなければならない

Property Grid

これも可能ですか?

もっとコードを投稿したり、必要に応じてもっと説明したりできます。これは私の最初の質問ですので、簡単にどうぞよろしくお願いします。

答えて

1

カスタム色を定義しようとしているので、ARGB値を保存して返します。非常に迅速な対応のための

使用し、代わりに色の名前を保存...

Public Property SignatureCapturePenColor() As Color 
    Get 
     Dim myset As New mySettings 
     Return Color.FromName(myset.GetSetting("SignatureCapturePenColorName", mySettings.e_Scope.Tech)) 
    End Get 
    Set(ByVal value As Color) 
     Dim myset As New mySettings 
     myset.SetSetting("SignatureCapturePenColorName", value.Name, mySettings.e_Scope.Tech) 
     Dim ncSet As New ncSettings 
     ncSet.NotifyPropertyChanged() 
    End Set 
End Property 
+0

ありがとう!私はこの同じテクニックを何回か試してみましたが、正しく動作するようにはできませんでした。私の問題はセッターがvalue.nameを設定していないことでした。 – Nathan

+0

あなたの設定のコレクションについてはわからないので、言うことはできません。私はあなたに伝えることができるのは、変数を保存したり、変数から名前を取得したりするだけで、プロパティグリッドが正常に動作することです。 –

関連する問題