PropertyGrid virker, ogsaa alligevel ikke
Jeg har lavet en form. Paa denne er der placeret et PropertyGrid. Jeg har oprettet en type(hello) til test, der har een Property(EditorAttribute). Se klassen og attributten tilsidst i dette spg.Denne attr. er tilfoejet saaledes at jeg kan lave min egen edit-GUI i propertyGriddet. Alt sammen virker fint.
Testen er imidlertid ikke den fuldendte loesning. Jeg skal vise dette paa en hjemmeside, saa jeg vil lave en ActiveX control (register for COM interop) istedet for en form. Idet jeg goer dette, saa bliver min MyUIEditor2 funktioner ikke kaldt!!!! Der er noget galt her...
Koden er:
public class Hello
{
private FileExtensions2 f = FileExtensions2.NONE;
[System.ComponentModel.EditorAttribute(typeof(MyUIEditor2), typeof(System.Drawing.Design.UITypeEditor))]
public FileExtensions2 FileExtensions
{
get {return f;}
set {f = value;}
}
}
[Flags()]
//[TypeConverterAttribute(typeof(MyTypeConverter2))]
public enum FileExtensions2 : int
{
NONE = 0,
MAX_INPUT = 1,
OBJ_INPUT = 2,
MAX = 256,
OBJ = 512,
}
public class MyUIEditor2 : System.Drawing.Design.UITypeEditor
{
public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, IServiceProvider provider, object value)
{
IWindowsFormsEditorService o = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
ListView lv = new ListView();
lv.View = View.List;
foreach(string name in System.Enum.GetNames(value.GetType()))
{
if(name.ToUpper().EndsWith("INPUT")) continue;
ListViewItem lvi = lv.Items.Add(name);
lvi.Selected = ((FileExtensions2)value & (FileExtensions2)System.Enum.Parse(value.GetType(), name)) != FileExtensions2.NONE;
}
o.DropDownControl(lv);
o.CloseDropDown();
FileExtensions2 newValue = FileExtensions2.NONE;
foreach(ListViewItem lvi in lv.SelectedItems)
{
newValue |= (FileExtensions2)System.Enum.Parse(value.GetType(), lvi.Text);
}
return newValue;
}
public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
{
return System.Drawing.Design.UITypeEditorEditStyle.DropDown;
}
}
