在C# WinForms应用程序中安装,配置和使用MetroFramework

本文介绍了如何通过NuGet安装和在Windows Forms应用中使用MetroFramework,创建具有现代UI风格的控件。这个轻量级框架提供了多种自定义控件,如按钮、标签、进度条等,无需大幅度增加项目大小。通过添加对DLL文件的引用,确保项目能在不同计算机上正常运行。文章详细阐述了安装过程、在工具箱中添加控件选项卡以及如何使用框架中的功能。
摘要由CSDN通过智能技术生成

1.通过NuGet安装框架
2.在工具箱中为Metro控件创建一个新选项卡
3.添加对Metro控件和字体的引用
4.使用框架
迄今为止, 还没有很多解决方案可以使用WinForms之类的工具在Windows桌面应用程序中创建动态用户界面。最著名的方法是实现CefSharp, 以便能够使用HTML, CSS和JavaScript设计界面。但是, 不是每个人都可以通过实现CefSharp在他们的项目中使用自定义HTML控件来简单地增加50MB以上的项目大小。对于那些仍然想要实现自定义控件并使它们看起来比默认控件更好的控件, 还有一个很棒的解决方案, 可以不显着增加项目的大小并使用自定义控件。

我们正在谈论MetroFramework, 此UI框架将Windows 8的Modern UI别名Metro UI带到任何.NET Windows Forms应用程序中。该框架添加了Metro样式的组件, 例如:

纽扣
组合框
复选框
单选按钮
切换
标签
链接
面板
滚动条
地铁
进度条
ProgressSpinner
TabControl
轨迹栏
自定义用户控件
上下文菜单
留言框
DateTimePicker
格网
如果你知道如何配置它, 则可以轻松地将元素拖放到表单中, 并添加该库作为参考, 以在你的应用程序中的任何地方使用它。在本文中, 我们将精确地教你这一点。

1.通过NuGet安装框架
首选的安装方式是通过NuGet。通过访问NuGET程序包管理器, 使用Visual Studio安装程序包。在Visual Studio右上方的解决方案资源管理器中右键单击你的项目, 然后在下拉菜单中选择”管理NuGet程序包”:
在这里插入图片描述
在紧急窗口中, 转到”浏览”选项卡并搜索Metromodernui, 在列表中选择软件包并将其安装在项目中:
在这里插入图片描述
设置完成后, 你将可以使用软件包中包含的动态库。有关此库的更多信息, 请访问Github上的官方存储库。
2.在工具箱中为Metro控件创建一个新选项卡
使用MetroFramework, 你将能够像使用传统控件一样将控件拖放到窗体中。为了进行组织, 我们建议你创建一个自定义的”工具箱”选项卡, 以存储在MetroFramework的专有控件中。右键单击工具箱的空白区域, 然后从下拉菜单中选择添加选项卡, 这将允许你创建一个空白选项卡并提供自定义名称, 在这种情况下, 我们将其命名为Metro Controls:
在这里插入图片描述
然后右键单击你创建的自定义标签(地铁控件), 然后从菜单中选择选择项目
在这里插入图片描述
在新窗口中, 转到” .NET Framework组件”选项卡, 然后单击”浏览”:
在这里插入图片描述
出现文件浏览器后, 你需要导航到WinForms项目的文件夹, 然后在packages文件夹中搜索MetroModernUI文件夹, 然后在lib上, 最后在网络上。在net文件夹中应该有3个.dll文件, 你将只选择MetroFramework.dll文件并单击”打开”。

MetroFramework UI控件
然后将出现一个加载栏, 控件将出现在.NET组件列表中, 最后单击OK:
在这里插入图片描述
默认情况下, 将选中所有组件, 但是你可以取消选择不需要的组件。最后, 控件将出现在先前创建的”控件”选项卡中:
在这里插入图片描述
你将能够像使用Windows的默认组件一样, 简单地在窗体中拖放所需的控件。

3.添加对Metro控件和字体的引用
通过上一步, 你可以在项目中拖放组件并使用它们, 但是, 如果你决定在其他计算机上部署项目, 则该组件将不起作用, 因为这些组件不存在。因此, 你需要在项目中添加对MetroFramework的DLL文件的引用, 以便能够在任何地方使用它们。

转到Visual Studio右上角的解决方案资源管理器, 右键单击你的项目, 然后单击”添加”菜单, 然后单击”参考”:
在这里插入图片描述
在紧急窗口上, 搜索”浏览”选项卡, 然后单击”浏览”按钮。再次如我们先前在步骤2中所做的那样, 在软件包的MetroModern文件夹内搜索net文件夹, 然后选择3个dll文件:
在这里插入图片描述
单击添加, 然后在引用管理器窗口中选择确定。然后在你的项目的引用上, 应该出现对DLL文件的3个引用:
在这里插入图片描述
现在, 你可以使用此框架执行任何操作!

4.使用框架
尽管大多数功能都以相同的方式工作, 但是如果你想直接从框架中使用代码(例如Alert框), 那么你将需要在类的顶部导入所需的名称空间:
using MetroFramework.Forms;
using MetroFramework;
例如, 你可以在表单中添加带有可视化构建器的按钮, 然后双击它, 并且click事件将以与默认控件相同的方式自动添加。现在, 在单击事件中, 你可以使用以下方法显示”地铁箱”:

MetroMessageBox.Show(this, “Your message here.”, “Title Here”, MessageBoxButtons.OKCancel, MessageBoxIcon.Hand);
它将显示一个带有Metro风格的消息框:
在这里插入图片描述
有关更多信息, 我们建议你阅读图书馆作者的官方博客中的文档, 或在此处查看Github的官方存储库。

代码介绍 MetroForWinForm(win8风格模版) using System; using System.Drawing; using System.Globalization; using System.Windows.Forms; using MetroFramework.Forms; namespace MetroFramework.Demo { public partial class MainForm : MetroForm { public MainForm() { InitializeComponent(); metroStyleManager.Theme = MetroThemeStyle.Default; metroStyleManager.Style = MetroColorStyle.Teal; } private void metroTileSwitch_Click(object sender, EventArgs e) { var m = new Random(); int next = m.Next(0, 13); metroStyleManager.Style = (MetroColorStyle)next; } private void metroTile1_Click(object sender, EventArgs e) { metroStyleManager.Theme = metroStyleManager.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light; } private void metroButton1_Click(object sender, EventArgs e) { MetroTaskWindow.ShowTaskWindow(this, "SubControl in TaskWindow", new TaskWindowControl(), 10); } private void metroButton2_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "Do you like this metro message box?", "Metro Title", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk); } private void metroButton5_Click(object sender, EventArgs e) { metroContextMenu1.Show(metroButton5, new Point(0, metroButton5.Height)); } private void metroButton6_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `OK` only button", "MetroMessagebox", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void metroButton10_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `OK` and `Cancel` button", "MetroMessagebox", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); } private void metroButton7_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `Yes` and `No` button", "MetroMessagebox", MessageBoxButtons.YesNo, MessageBoxIcon.Question); } private void metroButton8_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `Yes`, `No` and `Cancel` button", "MetroMessagebox", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); } private void metroButton11_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `Retry` and `Cancel` button. With warning style.", "MetroMessagebox", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning); } private void metroButton9_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample MetroMessagebox `Abort`, `Retry` and `Ignore` button. With Error style.", "MetroMessagebox", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error); } private void metroButton12_Click(object sender, EventArgs e) { MetroMessageBox.Show(this, "This is a sample `default` MetroMessagebox ", "MetroMessagebox"); } private void metroButton4_Click(object sender, EventArgs e) { var testform = new TestForm1(); testform.ShowDialog(); } private void metroButton4_Click_1(object sender, EventArgs e) { metroTextBox2.Focus(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光怪陆离的节日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值