aardio 调用 C# MaterialSkin

By jerryxjr1220 at 2022-08-23 • 1人收藏 • 609人看过

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();

捕获.PNG

https://github.com/giansalex/MaterialSkin


可以直接从Nuget上安装最新版MaterialSkin2

10 个回复 | 最后更新于 2022-08-25
2022-08-23   #1

捕获.PNG

原生的还有MaterialForm式样,侧边栏MaterialDrawer可以自动转换TabControl。

但aardio里不知道怎么样直接改mainForm式样。

2022-08-23   #2

用这个是不是所有的代码都要用c#写了? 比如tabpage......, form, 这些.....

如果是,那就意义不大, 不如直接用c#写界面了, 偶尔用个单个button和switch倒是还行.

2022-08-23   #3

回复#2 @admin :

不用啊,除了MaterialForm以外,其他控件都是可以直接嵌入aardio里的。

其实,从名字就可以知道,这个库最主要的功能是方便一键换皮肤,它里面有个皮肤管理器,那个才是核心


B站有个视频:

https://www.bilibili.com/video/BV1Vy4y1m7XF?vd_source=0400f0a70c0250d73895963c7c937f75

2022-08-23   #4

回复#3 @jerryxjr1220 :

我的意思 这个能嵌入aardio的form到C#的tabpage吗?

就是类似aardio里的tab.loadform("/dlg/test1.aardio"); 将aardio里的test1.aardio界面写入到c#的这个tabpage里?

因为没这样用过, 一般都是单独拎出来一个功能来使用, 这样能实现吗?

2022-08-24   #5

回复#4 @admin :

我试了一下也是可行的,虽然我以前也从来没这样用过。

TabContol和TabPage都是C#的,里面嵌套了aardio的子窗口winform1.aardio,通过win.setParent绑定过去,功能一切正常。

PS:子窗口winform1要设置成无边框模式,不然难看死了

捕获.PNG

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   #6

回复#5 @jerryxjr1220 :

多谢解答

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();


2022-08-25   #8

回复#1 @jerryxjr1220 :

2022-08-25   #9

回复#8 @hi_aardio :

mb = dll.new("MaterialSkin.Controls.MaterialButton");
mb.Text = "MaterialButton"
mb.Click = function(sender, e){
	console.log("mb.Click")
}


2022-08-25   #10

回复#9 @admin :

谢谢谢谢

问这个问题前我尝试自己做了一下,无果。。

还在看aardio dotNet这一块的示范,只会简单套,

mb.Click = function(sender, e){

的使用,学习了。。。

登录后方可回帖

登 录
信息栏
公 告:

专注分享

谢绝纯提问

谢谢合作!
本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...