Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / EventsTab / 8 сообщений из 8, страница 1 из 1
09.08.2007, 11:15
    #34716195
sql1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EventsTab
Подскажите как добавить вкладку events в PropertyGrid
...
Рейтинг: 0 / 0
09.08.2007, 14:09
    #34717064
maybeleo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EventsTab
sql1Подскажите как добавить вкладку events в PropertyGrid тынц
ЗЫ. Да уж... не ожидал, что там (в PropertyGrid) все так запущено...
...
Рейтинг: 0 / 0
14.08.2007, 11:23
    #34725764
sql1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EventsTab
не один из приведенных примеров не работает
в каждом отсутствует какой либо необходимый класс

я так понимаю ни кто с данной проблемой вообще не сталкивался а если и сталкивались то решали ее криво изобретая велосипед :(

Ужос какойто
...
Рейтинг: 0 / 0
14.08.2007, 11:25
    #34725769
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EventsTab
Читайте про System.Windows.Forms.Design.PropertyTab
...
Рейтинг: 0 / 0
14.08.2007, 11:52
    #34725910
maybeleo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EventsTab
НахлобучЧитайте про System.Windows.Forms.Design.PropertyTabА, кстати, да. Sql1, попробуйте пометить свой ButtonWrapper атрибутом
Код: plaintext
[PropertyTab(typeof(EventsTab), PropertyTabScope.Component)]
- интересно, появится ли вожделенный EventsTab в редакторе коллекции?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.06.2020, 13:30
    #39971807
Antinet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EventsTab
Уже 13 лет вопросу) Я около года пишу среду, и тщательно исследовал EventTab. Его непросто добавить в PropertyGrid, потому что он по идее связан только с конструктором форм. Ниже моя реализация. К хосту конструктора (IDesignerHost / DesignSurface) должна быть добавлена служба IEventBindingService, отвечающая за редактор кода. Достаточно унаследовать EventBindingService.

Код: 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.
        public class DesignerPropertyGrid : PropertyGrid
        {
            ToolStrip ts;
            ToolStripItemCollection tsi;
            bool need = true;
            int selindex = 3;

            public DesignerPropertyGrid()
            {
                ts = Controls[3] as ToolStrip; // извлекаем верхний тулстрип с кнопками
                tsi = ts.Items;
            }

            protected override void OnSelectedObjectsChanged(EventArgs e)
            {
                var o = SelectedObject as IComponent;
                if (o == null || o.Site == null)
                {
                    base.OnSelectedObjectsChanged(e);
                    return;
                }
                Site = o.Site; // сайт со связью с конструктором нужен для работы с IEventBindingService, без этого таб не появится
                if(need) // это надо сделать один раз
                {
                    PropertyTabs.AddTabType(typeof(EventsTab), PropertyTabScope.Static); // добавим таб
                    tsi.Remove(tsi.OfType<ToolStripButton>().Where((item) => !item.Enabled).Last()); // удалим старую кнопку свойств
                    tsi.Remove(tsi.OfType<ToolStripSeparator>().Last()); // удалим лишний сепаратор
                    tsi[3].MouseUp += (s, a) => selindex = 3; // будем отмечать при переключении, какой из табов выбран
                    tsi[4].MouseUp += (s, a) => selindex = 4;
                    need = false;
                }
                ShowEventsButton(true); // отобразим кнопку
                if(selindex == 4)
                    tsi[4].PerformClick(); // иначе выделенный таб событий будет "слетать" при переключении между компонентами
                base.OnSelectedObjectsChanged(e);
            }

            public void OpenPropertyTab()
            {
                if (selindex != 3)
                {
                    tsi[3].PerformClick();
                    selindex = 3;
                }
            }

            public void OpenEventsTab()
            {
                if (selindex != 4)
                {
                    tsi[4].PerformClick();
                    selindex = 4;
                }
            }
        }
...
Рейтинг: 0 / 0
22.06.2020, 15:20
    #39971867
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EventsTab
Antinet
Уже 13 лет вопросу) Я около года пишу среду, и тщательно исследовал EventTab.

Ты 13 лет посвятил исследованию EventTab?
...
Рейтинг: 0 / 0
24.06.2020, 21:49
    #39972929
Antinet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EventsTab
fkthat, нет конечно, всего год с большими перерывами)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / EventsTab / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]