• [AX]AX2012在form上使用.net控件


    在AX2012的form中可以使用.net的控件,这些控件包括windows form控件(System.Windows.Forms命名空间)、Windows presentation foundation的控件(System.Windows.Controls命名空间)以及从这些空间派生出来的类型或者UserControl类型。这些.net控件由AX的ManagedHost控件宿主,在添加一个.net控件到form时,一个ManagedHost也被添加。

    添加.net控件到form可以是在设计时添加,也可以在运行时动态添加,无论哪种方式都需要添加相应程序集的引用。在AOT的References节点下右键菜单中“Add reference”可以选择要引用的程序集,也可以在AOT中form上new managedcontrol是选择添加引用程序集并选择相应的控件。这些程序集必须是强签名的,managedhost纪录程序集的名称、版本号语言及public token,由这些信息来唯一标识一个.net的程序集。

    下面简单演示如何动态的添加一个Windows form的button控件到AX form上:

    public void init()
    {
        FormManagedHostControl managedHostControl;
        System.Windows.Controls.Button myButton;
        System.Exception laste;
        ;
        super();
        try
        {
            managedHostControl = this.design().addControl(FormControlType::ManagedHost, "ManagedButton");
            managedHostControl.assemblyName("PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
            managedHostControl.typeName("System.Windows.Controls.Button");
            managedHostControl.sizing(Sizing::SizeToContent);
    
            myButton = managedHostControl.control();
            myButton.set_ToolTip("Press button to view the current time");
            myButton.set_Content("Time");
            myButton.UpdateLayout();
            myButton.add_Click(new ManagedEventHandler(this, "MyButton_Click"));
        }
        catch (Exception::CLRError)
        {
            laste = CLRInterop::getLastException();
            throw error(laste.ToString());
        }
    }
    
    public void MyButton_Click(System.Object sender, System.EventArgs args)
    {
        ;
        Box::info("The current time: " + time2Str(timeNow(),
            TimeSeparator::Colon, TimeFormat::AMPM), "Current Time");
    }

    运行的截图如下:

    在form的init函数中创建一个managedHost控件,指定其程序集、控件的类型,再从managedHost.control()得到对button控件的引用,就可以使用set_xxxx、get_xxxx等方法来操作.net控件的属性了。.net控件可以响应事件,使用add_xxxx放了来添加事件句柄,form的方法不能直接添加为句柄函数,必须使用ManagedEventHandler来封装。总的来看用法比较简单,却给我们在AX中创建复杂的UI提供了方便。

    更多信息参见MSDN:http://msdn.microsoft.com/EN-US/library/gg840966

  • 相关阅读:
    mysql导入报错: Incorrect string value: 'xF0xA0x83x8CxE5x8D...' for column 'q_title' at row 4
    spring原理解析
    php连接mysql报错The server requested authentication method unknown to the client
    springmvc快速入门
    set集合
    Linux安装MySQL5.7
    Java中jar包获取资源文件的方式
    ⚡王道数据结构绪论⚡
    ❤️排序❤️
    😊考研线代知识点汇总😊
  • 原文地址:https://www.cnblogs.com/duanshuiliu/p/2643877.html
Copyright © 2020-2023  润新知