С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
25 / 25 / 5
Регистрация: 11.11.2009
Сообщений: 56

Разработка компонент времени проектирования. Общие данные для объектов

22.02.2011, 11:42. Показов 1180. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработка компонент времени проектирования.
Ситуация следующая:
Делаю компонент
C#
1
class MyTextBox : TextBox
Ему добавлено текстовое свойство Comment:
C#
1
2
3
4
5
6
class MyTextBox : TextBox
{
...
    public string Comment {get; set;}
...
}
Но надо чтобы значения это свойства можно было выбирать из списка в Properties (например, так же как работают со свойствами типа Color), который формируется во время проектирования и на момент разработки компонента не известен. Этот список должен быть общий для всех объектов данного типа в рамках проекта.

Вопрос: где можно хранить такой список и как реализовать его хранение, открытие и изменение? При следующем открытии MVS он должен остаться тоже.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2011, 11:42
Ответы с готовыми решениями:

Разработка среды для проектирования презентаций
Всех приветствую! Есть задача: организовать многомашинную интерактивную мультимедийную презентацию. Точнее написать (создать) среду...

Общие данные для 2х таблиц
Доброго времени. Помогите вот с таким вопросом. В одной БД есть 2 таблицы: Хочется провернуть такую штуку, чтобы при вставке в...

Общие данные для 2х контроллеров
Здравствуйте. В общем вот код думаю Вы поймете что я пытаюсь сделать. var adv; function HeaderCtrl($scope) { $scope.adv =...

1
25 / 25 / 5
Регистрация: 11.11.2009
Сообщений: 56
23.02.2011, 19:56  [ТС]
Решение нашел только такое:
Список хранится в проекте в файле comment.lst, который создается автоматически и присоединяется к проекту.
C#
1
2
3
4
5
6
7
class MyTextBox : TextBox
{
...
    [Editor(typeof(CommentUIEditor), typeof(UITypeEditor))]
    public string Comment {get; set;}
...
}
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
public class CommentUIEditor : UITypeEditor
    {
        private IWindowsFormsEditorService _edSvc;
 
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            _edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
            if (_edSvc != null)
            {
                // Получаем интерфейс ProjectItem
                ProjectItem pi = (ProjectItem)provider.GetService(typeof(ProjectItem));
                Project project = pi.ContainingProject;
 
                try
                {
                    pi = project.ProjectItems.Item("comment.lst");
                }
                catch (Exception)
                {
                    string fileName = project.FullName.Substring(0, project.FullName.LastIndexOf('\\')) + "\\comment.lst";
                    using (StreamWriter sw = new StreamWriter(fileName, false))
                    {
                        sw.Close();
                        sw.Dispose();
                    }
                    pi = project.ProjectItems.AddFromFile(fileName);
                }
 
                ListBox listBox = new ListBox { BorderStyle = BorderStyle.None};
                using (StreamReader sr = new StreamReader(pi.FileNames[0]))
                {
                    foreach (string s in sr.ReadToEnd().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
                        )
                    {
                        listBox.Items.Add(s);
                    }
                    sr.Close();
                    sr.Dispose();
                }
                listBox.SelectedItem = value;
 
                listBox.MouseClick += CommentMouseClick;
                listBox.KeyUp += CommentKeyUp;
                _edSvc.DropDownControl(listBox);
                return listBox.Text;
            }
            return value;
        }
 
        private void CommentKeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                _edSvc.CloseDropDown();
            }
        }
 
        private void CommentMouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                _edSvc.CloseDropDown();
            }
        }
 
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
        {
            return UITypeEditorEditStyle.DropDown;
        }
 
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2011, 19:56
Помогаю со студенческими работами здесь

Общие данные для всего решения
Не знал как ещё лучше назвать... Но в общем. Есть проект, в нём много-много классов. В разных классах используются определённые...

Разработка дополнительных методов для объектов
Помогите создать функцию, которая будет заменять несколько последних элементов массива, после чего с помощью свойства prototype эта функция...

Компонент для выбора даты и времени
Добрый день уважаемые форумчане. Подскажите пожалуйста есть ли такой компонент что бы в нем сразу можно было задать и дату и время....

Компонент для ввода даты и времени одновременно
Всем привет, как называется этот компонент на фото ? Есть ли он в андроид студио ? DataPiceker не подходит.

Разработка АРМ логистика с использованием технологии прототипного проектирования
Учусь на программиста. Задали сделать курсовик. Времени ни как не хватает сделать прграммную часть. хотя не то что времени, а не понимаю с...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты 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. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru