我有一個System.Windows.Forms.PropertyGrid
與不同類型的值。對於特定項目,我想顯示有用值的列表以供選擇。用戶也可以輸入新的值。一些類似於傳統的下拉組合框:如何將可編輯的組合框添加到System.Windows.Forms.PropertyGrid?
到目前爲止,我有我自己的System.ComponentModel.TypeConverter
,但我無法弄清楚如何與建議值和編輯的可能性同時獲得下拉直接值。請幫忙!
我有一個System.Windows.Forms.PropertyGrid
與不同類型的值。對於特定項目,我想顯示有用值的列表以供選擇。用戶也可以輸入新的值。一些類似於傳統的下拉組合框:如何將可編輯的組合框添加到System.Windows.Forms.PropertyGrid?
到目前爲止,我有我自己的System.ComponentModel.TypeConverter
,但我無法弄清楚如何與建議值和編輯的可能性同時獲得下拉直接值。請幫忙!
您可以通過執行您自己的UITypeEditor來完成此操作。
我推薦閱讀Getting the Most Out of the .NET Framework PropertyGrid Control。特別是,標題爲Providing a Custom UI for Your Properties的部分將介紹如何爲特定屬性制定自定義控件。
很簡單。在你自己的StringConverter
返回false
爲GetStandardValuesExclusive
就是這樣。
看看這裏:
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;
}
}
我用大寫字母寫道FALSE
,只是爲了讓你easyer看到它。請用小寫字母:)
順便說一下:'GetStandardValuesExclusive'的覆蓋似乎只有在從'StringConverter'派生的類中使用時纔會被調用。當你從'TypeConverter'派生你的類時,它似乎不會被調用。 – 2014-12-19 10:45:44
繼承'System.ComponentModel.StringConverter'解決了這個問題。顯然,文本編輯不能用字符串以外的其他類型來完成。儘管感謝鏈接! – l33t 2012-03-20 16:33:59