aardio 调用 C# MaterialSkin
By
jerryxjr1220
at 2022-08-23 • 1人收藏 • 1725人看过
MaterialSkin是一个支持皮肤管理的Winform控件库,可以非常方便的切换皮肤主题,原生的主题皮肤也非常美观。
import win.ui;
/*DSG{{*/
mainForm = win.form(text="material";right=641;bottom=394;mode="popup")
mainForm.add(
cstButton={cls="custom";text="自定义控件";left=216;top=295;right=378;bottom=324;z=1};
cstSwitch={cls="custom";text="自定义控件";left=176;top=189;right=438;bottom=218;z=2};
cstTextbox={cls="custom";text="自定义控件";left=128;top=66;right=482;bottom=134;z=3}
)
/*}}*/
import dotNet
import System.Windows.Forms
dll = dotNet.load("\res\MaterialSkin.dll");
skin = dll.import("MaterialSkin");
mb = dll.new("MaterialSkin.Controls.MaterialButton");
mb.Text = "MaterialButton"
System.Windows.Forms.CreateEmbed(mb, mainForm.cstButton);
ms = dll.new("MaterialSkin.Controls.MaterialSwitch")
ms.Text = "MaterialSwitch"
System.Windows.Forms.CreateEmbed(ms, mainForm.cstSwitch);
mt = dll.new("MaterialSkin.Controls.MaterialTextBox2")
mt.Text = "MaterialTextbox2"
System.Windows.Forms.CreateEmbed(mt, mainForm.cstTextbox);
mainForm.show();
return win.loopMessage();
https://github.com/giansalex/MaterialSkin
可以直接从Nuget上安装最新版MaterialSkin2
10 个回复 | 最后更新于 2022-08-25
2022-08-23
#3
回复#2 @admin :
不用啊,除了MaterialForm以外,其他控件都是可以直接嵌入aardio里的。
其实,从名字就可以知道,这个库最主要的功能是方便一键换皮肤,它里面有个皮肤管理器,那个才是核心
B站有个视频:
https://www.bilibili.com/video/BV1Vy4y1m7XF?vd_source=0400f0a70c0250d73895963c7c937f75
2022-08-24
#5
回复#4 @admin :
我试了一下也是可行的,虽然我以前也从来没这样用过。
TabContol和TabPage都是C#的,里面嵌套了aardio的子窗口winform1.aardio,通过win.setParent绑定过去,功能一切正常。
PS:子窗口winform1要设置成无边框模式,不然难看死了

import win.ui;
/*DSG{{*/
mainForm = win.form(text="CsharpTest";right=959;bottom=591)
mainForm.add(
custom={cls="custom";text="自定义控件";left=22;top=76;right=931;bottom=562;z=1}
)
/*}}*/
import dotNet;
import System.Windows.Forms;
tabcontrol = System.Windows.Forms.TabControl()
tabpage1 = System.Windows.Forms.TabPage()
tabpage1.Text = "TabPage1"
tabpage2 = System.Windows.Forms.TabPage()
tabpage2.Text = "TabPage2"
tabcontrol.Controls.Add(tabpage1)
tabcontrol.Controls.Add(tabpage2)
System.Windows.Forms.CreateEmbed(tabcontrol, mainForm.custom)
var frmChild = mainForm.loadForm("\dlg\winform1.aardio");
win.setParent(frmChild.hwnd, tabpage1.Handle)
win.setPos(frmChild.hwnd,0,0)
mainForm.show();
return win.loopMessage();
2022-08-24
#7
回复#6 @admin :
dotNet库里还有不少其他好用的控件,比如WebBrowser,不用额外导入其他库,也能直接调用系统的浏览器。
import win.ui;
/*DSG{{*/
mainForm = win.form(text="CsharpTest";right=959;bottom=591)
mainForm.add(
custom={cls="custom";text="自定义控件";left=22;top=76;right=931;bottom=562;z=1}
)
/*}}*/
import dotNet;
import System;
import System.Windows.Forms;
wb = System.Windows.Forms.WebBrowser()
System.Windows.Forms.CreateEmbed(wb, mainForm.custom)
wb.Url = System.Uri("https://www.baidu.com")
mainForm.show();
return win.loopMessage();登录后方可回帖
多谢解答


原生的还有MaterialForm式样,侧边栏MaterialDrawer可以自动转换TabControl。
但aardio里不知道怎么样直接改mainForm式样。