RaiseComponentChanged требует как oldValue, так и newValue для ссылочного типа. ⇐ C#
RaiseComponentChanged требует как oldValue, так и newValue для ссылочного типа.
Я создаю собственный дизайнер для своего MainTabControl (расширенный TabControl). В методе OnAddTab я изменяю TabPageCollection, добавляя к нему новую вкладку.
Как указать oldValue для RaiseComponentChanged? TabPageCollection — это ссылочный тип.
ПС. Я знаю о глубоком копировании, но ищу лучшее решение.
Документация:
TabPageCollection
RaiseComponentChanged
публичный класс MainTabControlDesigner: ControlDesigner { DesignerVerbCollection _verbs; IDesignerHost _designerHost; //... общедоступное переопределение глаголов DesignerVerbCollection { получать { если (_verbs == ноль) { _verbs = новая коллекция DesignerVerbCollection() { новый DesignerVerb("Добавить вкладку", новый EventHandler(OnAddTab)), новый DesignerVerb («Удалить вкладку», новый EventHandler (OnRemoveTab)) }; MainTabControl mainTabControl = Управление как MainTabControl; если (mainTabControl != ноль) { если (mainTabControl.TabPages.Count == 0) _verbs[1].Enabled = false; иначе _verbs[1].Enabled = true; } } вернуть _глаголы; } } public void OnAddTab (отправитель объекта, EventArgs e) { MainTabControl родительскийКонтроль = Управление как MainTabControl; MainTabControl.TabPageCollection oldTabs = родительскийControl.TabPages; Транзакция DesignerTransaction = null; пытаться { транзакция = _designerHost.CreateTransaction («Добавить вкладку»); RaiseComponentChanging(TypeDescriptor.GetProperties(parentControl)["TabPages"]); MainTabPage newPage = (MainTabPage)_designerHost.CreateComponent(typeof(MainTabPage)); новаяСтраница.Текст = новаяСтраница.Имя; родительскийControl.TabPages.Add(новая страница); родительскийControl.SelectedTab = новая страница; RaiseComponentChanged(TypeDescriptor.GetProperties(parentControl)["TabPages"], oldTabs, родительскийControl.TabPages); транзакция.Зафиксировать(); } ловить { MessageBox.Show("При добавлении вкладки произошло исключение"); транзакция?.Отмена(); } } //... }
Я создаю собственный дизайнер для своего MainTabControl (расширенный TabControl). В методе OnAddTab я изменяю TabPageCollection, добавляя к нему новую вкладку.
Как указать oldValue для RaiseComponentChanged? TabPageCollection — это ссылочный тип.
ПС. Я знаю о глубоком копировании, но ищу лучшее решение.
Документация:
TabPageCollection
RaiseComponentChanged
публичный класс MainTabControlDesigner: ControlDesigner { DesignerVerbCollection _verbs; IDesignerHost _designerHost; //... общедоступное переопределение глаголов DesignerVerbCollection { получать { если (_verbs == ноль) { _verbs = новая коллекция DesignerVerbCollection() { новый DesignerVerb("Добавить вкладку", новый EventHandler(OnAddTab)), новый DesignerVerb («Удалить вкладку», новый EventHandler (OnRemoveTab)) }; MainTabControl mainTabControl = Управление как MainTabControl; если (mainTabControl != ноль) { если (mainTabControl.TabPages.Count == 0) _verbs[1].Enabled = false; иначе _verbs[1].Enabled = true; } } вернуть _глаголы; } } public void OnAddTab (отправитель объекта, EventArgs e) { MainTabControl родительскийКонтроль = Управление как MainTabControl; MainTabControl.TabPageCollection oldTabs = родительскийControl.TabPages; Транзакция DesignerTransaction = null; пытаться { транзакция = _designerHost.CreateTransaction («Добавить вкладку»); RaiseComponentChanging(TypeDescriptor.GetProperties(parentControl)["TabPages"]); MainTabPage newPage = (MainTabPage)_designerHost.CreateComponent(typeof(MainTabPage)); новаяСтраница.Текст = новаяСтраница.Имя; родительскийControl.TabPages.Add(новая страница); родительскийControl.SelectedTab = новая страница; RaiseComponentChanged(TypeDescriptor.GetProperties(parentControl)["TabPages"], oldTabs, родительскийControl.TabPages); транзакция.Зафиксировать(); } ловить { MessageBox.Show("При добавлении вкладки произошло исключение"); транзакция?.Отмена(); } } //... }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
C# передает объект ссылочного типа с ссылкой или без нее, когда нет переназначения
Anonymous » » в форуме C# - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Передача объекта ссылочного типа с ссылкой или без нее, когда нет переназначения
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-