aardio 文档
aardio 范例: 自定义控件
//自定义控件
import dotNet;
var compiler = dotNet.createCompiler("C#");
compiler.Reference("System.Drawing.dll","System.Data.dll","System.Windows.Forms.dll");
compiler.addSource("/0.WindowsFormsApp1.cs");
compiler.import("WindowsFormsApp1");
import win.ui;
import win.ui.ctrl.metaProperty;
/*
实际开发创建一个 win.ui.ctrl.netform 的库就行了
窗口控件都在 win.ui.ctrl 名字空间下,参考教程: https://mp.weixin.qq.com/s/s95LlTis3lrVeD8EYNZD0w
*/
namespace win.ui.ctrl{
class netform {
ctor(parent,tParam){
//创建 .NET 窗口
this.form = ..WindowsFormsApp1.Form1();
//作为控件嵌入 aardio 窗口
..dotNet.setParent(this.form,parent,false);
//aardio 控件必须在 hwnd 属性中指定窗口句柄
this.hwnd = this.form.Handle;
//.NET 使用 GDI+ / ARGB 格式颜色值
this.form.BackColor = ..gdi.argbReverse(tParam.bgcolor);
//添加委托回调
this.form.onButton1Click = function(){
if( this.oncommand ) this.oncommand();
}
}
@_metaProperty; //控件元表,定义了控件的公用方法
}
namespace netform{
_metaProperty = ..win.ui.ctrl.metaProperty(
//添加控件函数
setButtonText = function(txt){
//类外部定义元属性时使用 owner 代替 this
owner.form.button1.Text = txt;
}
);
}
}
//下面在自定义控件的类名里写 "netform" 就可以了
/*DSG{{*/
var winform = win.form(text="aardio form";right=1047;bottom=634;bgcolor=10789024)
winform.add(
netform={cls="netform";text="自定义控件";left=26;top=23;right=799;bottom=416;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/
winform.netform.oncommand = function(id,event){
winform.msgbox("点击了 C# 在 aardio 窗口里创建的按钮,在 C# 中调用 aardio 函数。");
winform.netform.setButtonText("点击了 C# 创建的按钮");
}
winform.show();
win.loopMessage();
Markdown 格式