如何在 System.Windows.Forms.PropertyGrid 中添加可编辑的组合框?

9
我有一个包含不同类型值的 System.Windows.Forms.PropertyGrid。对于特定项,我想显示一些有用的可供选择的值列表。用户也可以输入新值。类似于传统下拉组合框:

enter image description here

到目前为止,我拥有自己的System.ComponentModel.TypeConverter,但我无法弄清如何同时获得建议值下拉列表和直接编辑值的可能性。请帮帮我!
2个回答

8

2
继承 System.ComponentModel.StringConverter 解决了这个问题。显然,文本编辑只能使用字符串类型而不是其他类型。感谢提供的链接! - l33t

8

这很简单。在您自己的 StringConverter 中,对于 GetStandardValuesExclusive 返回 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;
      }
  }

我将 FALSE 写成大写字母,只是为了让你更容易看到它。请将它改成小写字母 :)


3
顺便提一下:重写 GetStandardValuesExclusive 方法似乎只有在从 StringConverter 派生的类中使用时才会被调用。当您从 TypeConverter 派生您的类时,它似乎不会被调用。 - Uwe Keim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接