Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 1
Регистрация: 13.09.2012
Сообщений: 8

Свойство созданного визуального компонента не активно на панели свойств

13.09.2012, 15:01. Показов 2199. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в следующем:
Кидая компонент ListBoxExx на форму, я могу видеть у него свойство S в панели свойств, но не могу изменять его.
Задача: менять свойство S данного компонента при помощи панели свойств Visual Studio.
Дополнительно: Данное свойство в панели отображается, но менять я его не могу. Если добавить свойство F типа Font, то все нормально меняется. Что я не так делаю с классом SubClass.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    class ListBoxExx : ListBox
    {
        private SubClass s;
        public SubClass S { get { return s; } set { s = value; } }
 
        // private Font f;
        // public Font F { get { return f; } set { f = value; } }
 
    }
 
 
    class SubClass: Object
    {
 
        private int i;
        private int j;
 
        public int I { get { return i; } set { i = value; } }
        public int J { get { return j; } set { j = value; } }
 
    }
P.S. Недавно начал писать на этом языке. Не судите строго. Если есть доп.вопросы - спрашивайте

Добавлено через 7 минут
Простите в теме немного опечатался. Свойство отображается, но заблокировано.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.09.2012, 15:01
Ответы с готовыми решениями:

Изменение свойств динамически созданного компонента
Здравствуйте! Из подключенного DLL файла динамически создаю форму, также динамически размещаю на ней компоненты. Хочется узнать, как к...

Отображение свойств созданного компонента в Object Inspector
Здравствуйте дорогие форумчане , изучаю создание компонентов , столкнулся с такой проблемой , при указании своих свойств , некоторые из них...

Как узнать caption динамически созданного компонента (панели)
// Создаем панель FormsList.Panel := TPanel.Create(pWindows); FormsList.Panel.Parent := pWindows; FormsList.Panel.Caption...

1
0 / 0 / 1
Регистрация: 13.09.2012
Сообщений: 8
19.09.2012, 10:29  [ТС]
Спасибо всем за помощь.
Проблема решается при помощи TypeConverter класса.
Предположим мы хотим создать свой ListBox со свойством являющимся экземпляром класса.
Для того, чтобы оно отображалось в панели свойств VS творим это.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    class ListBoxEx : ListBox
    {
        private MySize s = new MySize();
        // Делаем свойство S видимым в панели свойств
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public MySize S { get { return s; } set { s = value; } }
 
    }
 
    [TypeConverter(typeof(MySizeConverter))]
    // Описание класса 
    public class MySize
    {
        private int width;
        private int height;
 
        public int Width { get { return width; } set { width = value; } }
        public int Height { get { return height; } set { height = value; } }
 
        // ToString Можно и не переопределять вообще, но вернее будет его все же описать под свой класс
        // так как эта информация будет фигурировать в панели свойств как общее описание свойства экземпляра класса MySize
        public override string ToString()
        { return string.Format("{0}, {1}", Width, Height); }
 
        // Конвертер-класс (самый минимум)
        // Данный класс можно определить и вне класса MySize, но в нашем случае мы его нигде больше использовать не будем
        internal class MySizeConverter : TypeConverter
        {
            // дает свойства экземпляра класса MySize в панели свойств
            public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
            {return TypeDescriptor.GetProperties(typeof(MySize));}
 
            // дает "+" для экземпляра класса в панели свойств
            public override bool GetPropertiesSupported(ITypeDescriptorContext context)
            {return true;}
 
        }
    }

После первой компиляции компонент ListBoxEx, будет доступен на панели компонентов.
Создаем его объект и в панели свойств обнаруживаем свойство S состоящее из двух свойств Width и Height
P.S. Здесь отображен самый минимум, необходимый для отображения свойств экземпляра класса в панели свойств и отсутствуют проверка значений, конструктор(ы), события, поведение VS при изменении свойств Width, Height и пр.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2012, 10:29
Помогаю со студенческими работами здесь

Быстрый способ копирования всех свойств компонента созданного рантайм с уже существующего
Добрый день. Нет ли случайно быстрого способа копирования всех свойств компонента созданного рантайм с уже существующего, а то...

Как из собственно-созданного класса, изменить свойство компонента Формы (textbox)
Приветствую) Итак, на форме есть comboBox1 и TextBox1, нужно чтобы при выборе в выпадающем окне comboBox1, запустился метод Класса...

Создание визуального компонента наследника базового компонента
Добрый день! В VS 2005 было возможно создать элемент Windows Forms control library на базе стандартного элемента, скажем Button. Я...

Создание визуального компонента
Подскажите на базе какого класса создавать визуальный компонент для рисования который должен иметь события клавиатуры и мыши ? нужен...

Выбор визуального компонента
Подскажите каким компонентом и как отображать результаты функции. Необходимо, чтобы на форме отображались результаты, как в консоли.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru