我有一个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