zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    Android 5.0以下系统支持TLS 1.1/1.2协议版本
    Java & Android未捕获异常处理机制
    Oppo Reno2 不允许安装非正式签名应用
    Android ADB 实用总结
    Android Studio中的非项目文件及项目目录下的全局搜索
    Android开发中网络代理设置实用总结
    基于时间偏差思路下的时间周期度量
    nodejs anywhere 搭建本地静态文件服务
    Android 支持库迁移到AndroidX
    项目Gradle版本从4.4升级到4.6
  • 原文地址:https://www.cnblogs.com/duanshuiliu/p/2643877.html
Copyright © 2011-2022 走看看