aardio 调用 C# MaterialSkin

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

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){

的使用,学习了。。。

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...