Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
17 / 9 / 2
Регистрация: 18.01.2014
Сообщений: 155
1

Не работает set в пользовательском свойстве UserControl

28.02.2016, 23:32. Показов 2338. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Сделал свой контрол.
Создал ему свойство:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        public List<int> Values
        {
            get
            {
                return list;
            }
            set
            {
                MessageBox.Show("свойство set");
                list = value;
            }
        }
Так вот.
Свойство работает, запоминает значения,
НО
секция set вызывается только во время создания контрола или при изменении количества элементов в листе.
Если просто поменять значения в списке, то set не вызывается и, соответственно, месаж бокс не показывается.
Можете подсказать в чем причина и как можно сделать так, чтобы обработчик set вызывался при КАЖДОМ изменении свойства?
Неужели нужно писать свой эдитор для такой элементарной задачи?...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2016, 23:32
Ответы с готовыми решениями:

Выбор поля класса в свойстве UserControl
Подскажите, как в режиме разработки(design-time) указать свойство моего пользовательского элемента...

Set в свойстве класса
Здравствуйте! Есть свойство класса: private Map mapObject { get {...

В свойстве описываются только блоки get set, но не реализовываются. Исправить код
Ребят, всем привет!!!! Помогите пожалуйста исправить программу, чтобы она работала, вот программный...

Не сохраняются значения в свойстве своего UserControl в режиме конструктора форм, когда я его использую в другом проекте
Ситуация: я создал свой контрол, который содержит TextBox и добавил несколько свойств. Далее я этот...

5
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
28.02.2016, 23:44 2
Если вы меняете сам список где-то в коде, то это свойство и не должно вызываться... Оно вызывается только при присваивании свойству значения... Это нормальное поведение.
0
17 / 9 / 2
Регистрация: 18.01.2014
Сообщений: 155
28.02.2016, 23:47  [ТС] 3
Я изменяю свойство в Свойствах элемента нажимаю кнопочку справа от (Collection)
меняю значение в листе....
и свойство не изменяется.
Не программно.
В секции set есть еще дополнительная обработка исключений и прочая лабуда, которую я здесь не привел.
Но суть в том, что если я изменяю свойство ручками в дизайнере - это все не работает! не знаю почему.
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
28.02.2016, 23:52 4
Лучший ответ Сообщение было отмечено taancer как решение

Решение

В этом и есть ваша проблема, вы меняете список, а не свойство.

Вот изменение свойства
C#
1
someclass.Values = xxx;
А вот допустим то, что вы делаете
C#
1
2
3
4
5
someclass.Values.Add(somevalue);
или
someclass.Values.Remove(somevalue);
или
someclass.Values.Clear();
Видите разницу?
1
17 / 9 / 2
Регистрация: 18.01.2014
Сообщений: 155
29.02.2016, 00:37  [ТС] 5
Я пробовал уже много вариантов.
И с массивом инт[]
и с Dictionary
...
Для массива все вроде бы срабатывает, но если менять значения в элементах массива, прямо в окне свойств - опять же, свойство НЕ ИГРАЕТ!
для дикшнари изменение свойства вообще не понятно как работает.
в общем, засада какая-то.

Добавлено через 3 минуты
Someone007, я не вызываю изменение свойства программно.
Программно как это делать - понятно. тут можно и приватной переменной list попользоваться, если внутри класса
это все я знаю.
я не понимаю, почему не работает вызов метода именно из среды разработки уже при размещении контрола на форму и настройке свойств через окно Properties

Добавлено через 26 минут
А... кажется понял. Типа если не меняется ссылка на сам объект, то и свойство не изменяется.
Хм. интересный подход.
Но совершенно не понятно тогда, как быть с изменениями как раз в свойствах этого объекта?...

Добавлено через 12 минут
Как можно подписаться на события изменения свойства?...
Получается, что полюбому придется писать свой редактор...
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
29.02.2016, 00:40 6
Цитата Сообщение от taancer Посмотреть сообщение
Как можно подписаться на события изменения свойства?..
Это посмотрите. Может что-то подскажет.
https://msdn.microsoft.com/ru-... .110).aspx
1
29.02.2016, 00:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.02.2016, 00:40
Помогаю со студенческими работами здесь

Не работает Binding UserControl
Приветствую. Столкнулся c проблемой привязки пользовательского элемента управления(UC). Делаю в...

Не работает свойство зависимости в UserControl
Не понимаю, в чём проблема. Был создан UserControl в ClassLibrary, положен на основное окно. Внутри...

UserControl на странице работает, пока он один
Сделал User Control ,в нем автокомплит,все работает хорошо,но когда вывожу два контрола на одну...

Не работает биндинг к DependencyProperty моего UserControl
Есть колхозный слайдер с 2-мя ползунками &lt;UserControl x:Class=&quot;RealEstateAgency.RangeSliderBar&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru