@Silector
Интроверт

Как просто организовать Combobox в Propertygrid (c#)?

Я конечно нашел статью на хабре, но я не могу воспринять такой большой объем новой информации (((
habrahabr.ru/post/78024

Пока вот это работает и в Propertygrid я вижу это свойство и могу менять:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication13
{

    [TypeConverter(typeof(ExpandableObjectConverter))]
    class Vec2
    {
        
        [DisplayName("Координата x"), Description("Координата x"), Category("Координаты")]
        public float x { get; set; }


        [DisplayName("Координата y"), Description("Координата y"), Category("Координаты")]
        public float y { get; set; }

        public Vec2(float x, float y)
        {
            this.x = x;
            this.y = y;
        }
       
    }
}


Желательно бы простенький пример с Combobox, вроде этого, ну или хотябы ссылку на что-нить по проще хабровской статьи "PropertyGrid в Visual Studio: отображение полей, связанных с коллекциями объектов"
  • Вопрос задан
  • 1798 просмотров
Решения вопроса 1
DmitryITWorksMakarov
@DmitryITWorksMakarov
Например, у вас есть объект со свойством типа string и вы хотите чтобы через PropertyGrid можно было бы выбирать из выпадающего списка новое значение для этого свойства. Выглядит это приблизительно так:

using System;
using System.ComponentModel;

public class MyClass
{
    [TypeConverter(typeof(EnumConverter))]
    public string stringProperty {get; set;}

    public MyClass()
    {
        stringProperty = EnumConverter.ALT1;
    }

    class EnumConverter : TypeConverter
    {
        public const string ALT1 = "Альтернатива1";
        public const string ALT2 = "Альтернатива2";
        public const string ALT3 = "Альтернатива3";

        public override bool GetStandardValuesSupported(ITypeDescriptorContext context)  {return true;  }

        public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)   {return true;  }

        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            return new StandardValuesCollection(new[] {ALT1, ALT2, ALT3 });
        }
    }
}


потом что-то типа:

propertyGrid.SelectedObject = new MyClass();

чтобы посмотреть что получилось
P.S. Код не запускал. Поэтому могут быть мелкие помарочки. Пишите в комментарий, если что не получается или не понятно.
P.P.S. Так то PropertyGrid мощнейший компонент. Может очень и очень многое. Но не больше =).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы