PropertyGrid Multiselect
-
Hallo!
Ich verwende ein PropertyGrid und habe mir meinen eigenen UITypeEditor geschrieben.(Das hat lange gedauert bis ich mich da zurecht gefunden habe!)
Aber nun funktioniert es Gott sei Dank.
Probleme macht mir eigentlich nur das Multiselect. Weiß einfach nicht was ich da zurückbekomme. D.h. was passiert wenn ich dem PropertyGrid mehr als ein Objekt übergebe? Bei allen Membervariablen die man nicht selber behandelt wird einfach das Feld leer gelassen(blank). Für meine eigenen Datentypen muss ich das ganze ja selber behandlen! Leider komme ich da auf keinen grünen Zweig, da ich schon ganz am Anfang hänge. Was bekommt man denn in der Methodepublic override object EditValue(ITypeDescriptorContext context,IServiceProvider provider,object value) { IWindowsFormsEditorService wfes = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService; if (wfes == null) { return value; } UIRoutingTableEditorForm form = new UIRoutingTableEditorForm(); if (value != null) { if (value is List<string>) { form.EditorValue = (List<string>)value; } else { MessageBox.Show(value.ToString()); } } form._wfes = wfes; form.TopLevel = false; wfes.DropDownControl(form); value = form.EditorValue; return value; }
als value zurück?
Weitere Frage: gibt es vielleicht eine Mehtode die ich überschreiben kann damit ich mir das Multiselect handling selber machen kann? D.h. ich lege selber fest was da zurückgegeben wird.
Oder hat vielleicht jemand überhaupt eine andere Idee wie man das Lösen könnte.
Ich habe ja eine String List,bei Multiselect häte ich gerne das eine Liste zurückgegeben wird nur mit den strings die in allen Listen des Selectionsets vorkommenLg THE_ONE
-
Schau doch einfach mal mit dem Debugger rein, was "value" für nen Typ hat.
-
Mann, manchmal sieht man den Wald vor lauter Bäume nicht mehr! Danke für deinen Tipp.
Was aber kann ich mit dieser Information anfangen.Wenn ich ein Element wähle funktioniert alles so wie es soll!
Wenn ich Element mit unterschiedlichen Listen wähle -> dann bekomme ich null zurück.
Wähle ich mehrere Elemente mit gleichem Inhalt. bekomme ich folgendes zurück:
http://farm4.static.flickr.com/3462/3837301421_96952795dd_o.pngWie komme ich nun an die Elemente? gar ned oder?? da nicht öffentlich.
Lg THE_ONE
Das was ich erreichen will funktioniert also nicht. Alle Elemente zurückgeben die in allen selektierten Elementen vorkommen. Also auch wenn Elemente nicht exakt gleich sind sondern nur ein paar gleiche Elemente haben.
Beispiele:
Element1.List: Hund,Katze,Maus,Pferd
Element2.List: Hund,Katze,Maus,Pferd
Selektieren ich diese zwei Elemente bekomme ich das was man im Screenshot sieht!Element1.List: Hund,Katze,Maus,Pferd
Element2.List: Hund,Pferd
Selektiere ich diese zwei Elemente bekomme ich null zurück
Schön wäre es aber wenn ich eine Liste mit: Hund,Pferd zurückbekommen würde.
-
/// Nimm das: (für das erste Problem) var list = value as ICollection; // oder ICollection if (list != null) // [...]
-
Schaust Du ab und an auch mal in die MSDN ?
-
Knuddlbaer schrieb:
Schaust Du ab und an auch mal in die MSDN ?
Ja oft genug! Nur leider weiß ich oft nicht nach was ich suchen soll.
Habe immer nach MultiMergeCollection gesucht und leider nichts gefunden.@archimedischer Körper
(Rhombicosidodecahedron )
Danke,Danke,Danke,Danke,....if (value is List<string>) { form.EditorValue = (List<string>)value; } else { var list = value as ICollection; // oder ICollection if (list != null) { string[]help = new string[list.Count]; list.CopyTo(help,0); form.EditorValue = new List<string>(help); } }
Problem 1 ist nun gelöst, bei Selektion von:
Element1.List: Hund,Katze,Maus,Pferd
Element2.List: Hund,Katze,Maus,Pferd
bekomme ich nun: Hund,Katze,Maus,Pferd zurückFür Problem 2 habe ich aber noch keine Lösung, habt ihr vielleicht Ideen mit was ich es probieren könnte?
Lg und vielen Dank nochmal für eure Hilfe und Geduld