2012-03-20 38 views
6

私はSystem.Windows.Forms.PropertyGridに異なるタイプの値を持っています。具体的な項目については、有用なの値のリストを示したいと思います。ユーザーは新しい値を入力することもできます。伝統的なドロップダウンコンボボックスに似た何か:編集可能なコンボボックスをSystem.Windows.Forms.PropertyGridに追加するにはどうすればよいですか?

enter image description here

これまでのところ、私はSystem.ComponentModel.TypeConverter自分を持っているが、私は推奨値とドロップダウン編集する可能性の両方を取得する方法を見つけ出すことはできません直接価値。助けてください!

答えて

6

これは独自のUITypeEditorを実装することで実現できます。

Getting the Most Out of the .NET Framework PropertyGrid Controlを読むことをお勧めします。特に、Providing a Custom UI for Your Propertiesというタイトルのセクションでは、特定のプロパティのカスタムコントロールを作成する方法について説明しています。

+2

「System.ComponentModel.StringConverter」を継承することで問題は解決しました。明らかに、テキスト編集は文字列以外のタイプでは行えません。リンクをありがとう! – l33t

4

簡単です。あなた自身でStringConverter の場合はfalseを返してください。

はここを見て:

internal class cmbKutoviNagiba : StringConverter 
{ 
     public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) 
     { 
      return FALSE; // <----- just highlight! remember to write it lowecase 
     } 

     public override TypeConverter.StandardValuesCollection GetStandardValues(
      ITypeDescriptorContext context) 
     { 
      string[] a = { "0", "15", "30", "45", "60", "75", "90" }; 
      return new StandardValuesCollection(a); 
     } 

     public override bool GetStandardValuesSupported(ITypeDescriptorContext context) 
     { 
      return true; 
     } 
    } 

を私はちょうどあなたがそれを見るためにeasyer作るために、大文字でFALSEを書きました。小文字で入力してください:)

+1

BTW: 'GetStandardValuesExclusive'のオーバーライドは、' StringConverter'から派生したクラスで使用された場合にのみ呼び出されるようです。 'TypeConverter'からクラスを派生させたときに呼び出されないようです。 –

関連する問題