对于我的应用程序,我必须动态加载.ocx文件。我可以通过以下代码来做到这一点

    private void InitializeComponent(string strProgId)
    {
        ResourceManager resources = new ResourceManager(typeof(AxForm));

        Type type = Type.GetTypeFromProgID(strProgId, true);
        m_axCtrl = new AxControl(type.GUID.ToString());

        ((ISupportInitialize)(m_axCtrl)).BeginInit();
        SuspendLayout();

        m_axCtrl.Enabled = true;
        m_axCtrl.Name = "axCtrl";
        m_axCtrl.TabIndex = 0;

        Controls.Add(m_axCtrl);

        Name = "AxForm";
        ((ISupportInitialize)(m_axCtrl)).EndInit();
        Resize += new EventHandler(AxForm_Resize);
        ResumeLayout(false);
        OnResize();
        Show();
    }


但是我的下一个问题是我不知道如何访问动态加载控件的属性和方法。我怎样才能做到这一点?请帮我

最佳答案

您应该能够使用'dynamic'伪类型关键字。它永远不会在编译时失败,而只会在运行时失败(因此,您必须仔细定义调用,以便它们与基础定义相匹配),就像这样(我想您在OCX上有2个方法):

dynamic ocx = m_axCtrl.GetOcx();
ocx.DoThis(arg1, arg2);
ocx.DoThat();

关于c# - 如何动态加载com的访问方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23406882/

10-08 21:31