PropertyGrid
グリッドは;を介して提供できます。System.ComponentModel
これは非常に柔軟ですが、非常に複雑な実装を使用します。ただし、推奨値を提供するには、 のGetStandardValues
方法を使用しますTypeConverter
。完全な例:
(編集: 必要CanConvertFrom
/ConvertFrom
コンボとして機能する)
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class MyType
{
[TypeConverter(typeof(GiveMeOptionsConverter))]
public string SomeProperty {get;set;}
private class GiveMeOptionsConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string) || base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
if (value is string) return value;
return base.ConvertFrom(context, culture, value);
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return false; // true is drop-down; false is combo
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
// this gives you the `MyType` instance if you need it
var obj = (MyType)context.Instance;
return new StandardValuesCollection(
new[] { "abc", "def", "ghi" });
}
}
}
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using (var grid = new PropertyGrid {
Dock = DockStyle.Fill,
SelectedObject = new MyType()
})
using (var form = new Form { Controls = { grid } })
{
Application.Run(form);
}
}
}
}