Avatar billede Lasse Novice
11. februar 2005 - 19:39 Der er 1 kommentar og
1 løsning

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;
        }
    }
Avatar billede Lasse Novice
11. februar 2005 - 20:00 #1
Ja, mit spg. er... hvordan faar man attributten EditorAttribute til at virke i et library der er "registeret for com interop". Jeg viser activeX controllen i en html side... og der bliver attributten ikke aktiveret.
Avatar billede Lasse Novice
04. april 2005 - 21:16 #2
lukker spg.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester