DockPanePlugin Не срабатывает при динамической подгрузке dll

Автор Тема: DockPanePlugin Не срабатывает при динамической подгрузке dll  (Прочитано 3958 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн user32Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Здравствуйте, столкнулся со следующей проблемой, создаю динамически кнопку на панели по этим статьям
https://adndevblog.typepad.com/aec/2013/05/navisworks-2014-api-new-feature-dynamic-loading-of-plugin.html
Тут все работает и вызывается и показывается, если вывести например Messagebox.Show(), но я хочу создать DockPanePlugin и вот тут у меня затык.
Если создать dll и поместить как обычно в папку плагинов с соответствующими xml и тд, то все срабатывает и DockPanePlugin по нажатию отображается, но если этот же код использовать при динамической подгрузке dll, то никаких изменений, методом тыка нашел, что pane.Visible не присваевается значение true, никак не могу понять, возможно ли вообще так сделать?
Вот код, который использую для отображения DockPanePlugin:
Код - C# [Выбрать]
  1. [Plugin("Test#1", "Me", ToolTip = "", DisplayName = "Test")]
  2.     public class WPFDockPaneAddin : AddInPlugin
  3.     {
  4.         public override int Execute(params string[] parameters)
  5.         {
  6.             if (Application.IsAutomated)
  7.             {
  8.                 throw new InvalidOperationException("Invalid when running using Automation");
  9.             }
  10.  
  11.             PluginRecord pr = Application.Plugins.FindPlugin("Test#1.Me");
  12.             if (pr is DockPanePluginRecord && pr.IsEnabled)
  13.             {
  14.                 if (pr.LoadedPlugin == null)
  15.                 {
  16.                     pr.LoadPlugin();
  17.                 }
  18.  
  19.                 if (pr.LoadedPlugin is DockPanePlugin dpp)
  20.                 {
  21.                     dpp.Visible = !dpp.Visible;
  22.                     var pane = dpp.CreateControlPane();
  23.                     pane.CreateControl();
  24.                     pane.Show();
  25.                     dpp.ActivatePane();
  26.                     MessageBox.Show("CreateControlPane, isVisible " + dpp.Visible); //Вот тут всегда false
  27.  
  28.                 }
  29.             }
  30.             return 0;
  31.         }
  32.     }
  33.  
  34.     [Plugin("Test#1", "Me", ToolTip = "", DisplayName = "Test")]
  35.     [DockPanePlugin(100, 200, FixedSize = false, MinimumHeight = 100, MinimumWidth = 300)]
  36.     public class Class1 : DockPanePlugin
  37.     {
  38.         protected override bool IsSelfEnabled() => true;
  39.  
  40.  
  41.  
  42.         public override Control CreateControlPane()
  43.         {
  44.             ElementHost eh = new ElementHost();
  45.             eh.AutoSize = true;
  46.             eh.Child = new UserControl1();
  47.             eh.CreateControl();
  48.             eh.Visible = true;
  49.             return eh;
  50.         }
  51.  
  52.         public override void DestroyControlPane(Control pane) => pane.Dispose();
  53.     }
  54.  

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн user32Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Спасибо, гляну