C# - Propertygrid

DexXxtrin

Erfahrenes Mitglied
Hallo zusammen

Ich habe zwei Frage zu PropertyGrid:
1.) Wie kann ich ein Feld erstellen, mit einem OpenFileDialo. Bei den Einstellungen sollte man den Pfad zu einem File auswählen können.

2.) Wie kann ich bei einem anderen Feld die verfügbaren COM-Ports zur Auswahl auflisten?
Wie ich die Sammlung einfügen kann, weiss ich. Nur habe ich noch nicht herausgefunden, wie ich eine unbestimmte Sammlung (variable Sammlung) einfügen kann.

Code:
public enum PortNames { COM1, COM2 };

Nun sollte aber in der Sammlung alle Verfügbaren COM-Ports stehen...

Gruss
 
Habe es selbst rausgefunden:

1.)
Code:
internal class FilteredFileNameEditor : UITypeEditor
        {
            private OpenFileDialog ofd = new OpenFileDialog();

            public override UITypeEditorEditStyle GetEditStyle(
             ITypeDescriptorContext context)
            {
                return UITypeEditorEditStyle.Modal;
            }

            public override object EditValue(
             ITypeDescriptorContext context,
             IServiceProvider provider,
             object value)
            {
                //ofd.FileName = value.ToString();
                ofd.Filter = "XML-Datei (*.xml)|*.xml";
                ofd.Title = "Datei auswählen";
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    return ofd.FileName;
                }
                return base.EditValue(context, provider, value);
            }
        }

[Editor(typeof(FilteredFileNameEditor),
typeof(System.Drawing.Design.UITypeEditor))]
        public string Pfad
        {
            get { return _path; }
            set { _path = value; }
        }

2.)
Code:
public class ComPortConverter : TypeConverter
    {
        public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
        {
            return true;
        }
        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            List<string> list = (context.Instance as AppSettings).PortList;
            StandardValuesCollection cols = new StandardValuesCollection(list);
            return cols;
        }
    } 

[CategoryAttribute("SerialPort")
TypeConverter(typeof(ComPortConverter))]
            public string Port
            {
                get { return myStr; }
                set { myStr = value; }
            }

            List<string> list;

        [Browsable(false)]
        public List<string> PortList
        {
            get
            {
                if (list == null)
                {
                    list = new List<string>();
                    string[] strSystemNames = System.IO.Ports.SerialPort.GetPortNames();
                    foreach (string strTemp in strSystemNames)
                    {
                        list.Add(strTemp);
                    }
                }
                return list;
            }
        }

Falls es jemand anderst interessiert ;)
 

Neue Beiträge

Zurück