aardio 调用 C# MaterialSkin
By
jerryxjr1220
at 2022-08-23 • 1人收藏 • 1424人看过
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式样。