Temat: Przyciski w propertygrid
Udało się :-) pojawił mi się przycisk [...] dodałem coś takiego:
public class ButtonModal : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(
ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context,
IServiceProvider provider, object value)
{
IWindowsFormsEditorService wfes = provider.GetService(
typeof(IWindowsFormsEditorService)) as
IWindowsFormsEditorService;
if (wfes != null)
{
MessageBox.Show("DD");
value = "dd";
}
return value;
}
}
[Editor(typeof(ButtonModal),typeof(System.Drawing.Design.UITypeEditor))]
public class btMW
{
}
Tylko niestety znalazłem inny problem. Ile razy będę dodawał taki przycisk na property grid tyle razy będzie on identyczny czyli za każdym razem będę miał messagebox i "dd". Zauważyłem że przy konwerterze stringów np takim:
[TypeConverter(typeof(StrList))]
public class ListStr
{
}
public class StrList : System.ComponentModel.StringConverter
{
private static List str;
public void SetList(List AList)
{
AList.Sort();
if (str == null)
str = new List();
else
str.Clear();
str = AList;
}
public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
return new StandardValuesCollection(str);
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
}
Zawsze będę miał tą samą listę w property grid. A chciałbym mieć inne. Dodam że to co mi się marzy to, że wszystkie property buduję dynamicznie i np. Jeżeli chcę dodać property z combo to robię to mniej więcej tak:
StrList d = new StrList();
d.SetList(strList);
CustomProperty myProp = new CustomProperty(sName, Value, typeof(ListStr), false, true, bCategory);
myProperties.Add(myProp);
Niestety jeżeli wypełniam odpalam coś takiego dla 3 różnych listy mam wszędzie(3 property) z tą samą ostatnią listę. Nie jestem aż tak biegły w C# ale czy dałoby się zrobić to tak żeby konvertery typów były przypisane do jednego property a nie do całego bez implementacji oddzielnie dla każdego property. A może jakieś inne rozwiązanie.
Marcin Woźniak edytował(a) ten post dnia 18.01.09 o godzinie 23:31