Как определить коллекцию списка элементов управления в библиотеке классов как свойство - PullRequest
0 голосов
/ 20 апреля 2020

Я использую библиотеку классов c# для создания пользовательского элемента управления. у меня нет проблем с простой коллекцией типов, вот пример того, как я ее использую:

namespace PersoComboBox
{

    public class ComboColDisplay
    {
        private string name;
        private int percentage;

        public string ColName
        {
            get { return this.name; }
            set { this.name = value; }
        }

        public int ColPercent
        {
            get { return this.percentage; }
            set { this.percentage = value; }
        }

        public ComboColDisplay()
        {
        }
    }

    public class PersoComboBox : ComboBox 
    {
        //Variables locales
        ErrorProvider EP = new ErrorProvider();
        //Collection property
        private List<ComboColDisplay> listColDisplay = new List<ComboColDisplay>();


        [Category("xControl properties")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public List<ComboColDisplay> PListColumnDisplay
        {
            get { return listColDisplay; }
            set { listColDisplay = value; Invalidate(); }
        }


        public PersoComboBox()
        {
        }

        private void refreshDrawMode()
        {
            if (listColDisplay.Count > 0) { this.DrawMode = DrawMode.OwnerDrawVariable; }
            else { this.DrawMode = DrawMode.Normal; }
        }
    }
}

Теперь я хочу использовать коллекцию коллекций типа как свойство! как я могу это сделать?

Спасибо.

1 Ответ

0 голосов
/ 21 апреля 2020

Я попробовал этот подход:

    namespace responsiveContainer
{
    public class ctrlGroup
    {
        private List<sortedCtrl> listCtrl = new List<sortedCtrl>();
        private int rowNumber;

        public List<sortedCtrl> listCtrlin
        {
            get { return this.listCtrl; }
            set { this.listCtrl = value; }
        }
        public int row_number
        {
            get { return this.rowNumber; }
            set { this.rowNumber = value; }
        }

        public ctrlGroup()
        {
        }
    }

    public class sortedCtrl
    {
        private Control ctrl;
        private int overLevel;

        public Control ctrlin
        {
            get { return this.ctrl; }
            set { this.ctrl = value; }
        }
        public int over_level
        {
            get { return this.overLevel; }
            set { this.overLevel = value; }
        }

        public sortedCtrl()
        {
        }
    }

    public class scrollable_responsive_container:XtraScrollableControl
    {
        private List<ctrlGroup> rowGroupControls = new List<ctrlGroup>();


        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [Category("xControl properties")]
        public List<ctrlGroup> sorted_ctrls_inPanel
        {
            get { return rowGroupControls; }
            set { rowGroupControls = value; }
        }

        public scrollable_responsive_container()
        {

        }

        protected override void OnSizeChanged(EventArgs e)
        {
            base.OnSizeChanged(e);
        }
    }
}

Вроде бы хорошо! но у меня есть ошибка во время разработки: введите responseiveContainer.sortedCtrl в сборке 'responseiveContainer, версия 1.0.0.0, cultur = нейтральный, publicKeyToken = null' не помечен как сериализуемый!

как я могу решить проблему?

...