none
PropertyPage em um COM escrito em C#... será impossível? RRS feed

  • Pergunta

  • Olá amigos,

     

    Criei um UserControl padrão. Nele coloquei vários métodos com o atributo [ComVisible(true)]. Funciona perfeitamente!

    Também implementei a inclusão e exclusão do registro, ou seja, criei métodos com o atributo

    [ComRegisterFunction()] e [ComUnregisterFunction()] respectivamente. Funciona perfeitamente.

     

    O problema, é que a página de propriedades de um ActiveX não chama a ComponentEditor do UserControl.

    A princípio, declarei na classe do UserControl o atributo:

    [Editor(typeof(EditorComp), typeof(System.ComponentModel.ComponentEditor))]

     

    e implementei a classe EditorComp:

    internal class EditorComp : System.ComponentModel.ComponentEditor

    {

    public override bool EditComponent(ITypeDescriptorContext context, object aobject)

    {

       MessageBox.Show("Editor de Propriedades....");

       return true;

    }

    }

     

    Se usar esse UserControl em aplicações no C#, a página de propriedades é chamada normalmente. Porém, quando ele está instanciado numa outra aplicação de outra ferramenta (onde ele deve ter o comportamento de um ActiveX) surge uma mensagem que não existe página de propriedades.

    Procurei par ver se existe algum atributo para "forçar" um método ou classe a se comportar como uma PropertyPage "padrão ActiveX"  (algo como o ComRegisterFunction e o ComUnregisterFunction por exemplo) mas não encontrei nada.

     

    O que preciso na verdade é escrever um ActiveX totalmente em C#. Na verdade só me falta resolver esta questão da PropertyPage.

    Na rede encontrei bastante coisa sobre como comunicar e interagir com objetos COM, mais não encontro muita coisa de como criá-los puramente em C#

     

    Fica aqui meu pedido de uma atenção especial por parte dos moderadores (sem desmerecer as demais dúvidas de outros participantes desse site forum), para que dentro do possível, se empenhem mais do que nunca, para encontrarmos a solução desse problema que está "rondando" muitos dos desenvolvedores da tecnologia COM/COM+.

     

    Obrigado a todos.

    Leandro.

     

    quarta-feira, 17 de dezembro de 2008 10:14