本文概述
- 1.安装EasyTabs
- 2.创建一个简单的测试表格
- 3.创建一个AppContainer表单
- 4.将应用程序的入口点设置为AppContainer
1.安装EasyTabs 要使用C#在WinForms应用程序上实现此类选项卡, 你将需要使用EasyTabs库。 EasyTabs是一个很棒的库, 它允许你使用.NET组件在标题栏空间中带有一组选项卡, 类似于Chrome, Firefox, Trillian或其他网络浏览器。它的源代码托管在Github上, 也是一个有用的示例, 可用来深入了解库的工作原理。要在Visual Studio中的项目上安装此软件包, 请转到解决方案资源管理器, 然后右键单击你的项目。从下拉列表中选择管理NuGet软件包选项:
文章图片
在管理器中, 转到浏览选项卡并搜索EasyTabs软件包:
文章图片
选择第一个软件包, 即Luke Stratman的EasyTabs, 并将其安装在你的项目中。安装完成后, 你将可以在代码上使用EasyTabs命名空间。
2.创建一个简单的测试表格 【在WinForms中使用EasyTabs创建具有Chrome样式选项卡的C#应用??程序】选项卡遵循以下原则:每个创建的选项卡都是本机Form的一个实例, 因此我们将创建的一个(即Form1)将成为每个创建的Tab的内容。你可以在创建AppContainer的下一步中通过条件更改此行为, 但是, 为了使你的应用快速运行并了解库的工作原理, 建议你使用一个简单的Form对其进行测试。
在此示例中, 我们的Form1非常简单, 并且具有许多本机组件, 但是它们什么也不做:
文章图片
但是, 特殊之处在于代码内部。你的表单需要具有用于返回ParentForm的ParentTabs属性的吸气剂, 因此请确保将属性添加到表单的源代码中:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// 1. Use Easy Tabsusing EasyTabs;
namespace Sandbox{public partial class Form1 : Form{// 2. Important: Declare ParentTabsprotected TitleBarTabs ParentTabs{get{return (ParentForm as TitleBarTabs);
}}public Form1(){InitializeComponent();
}private void Form1_Load(object sender, EventArgs e){}}}
现在, 可以在容器的选项卡上显示此表单。
3.创建一个AppContainer表单 接下来, 你将需要在应用程序上创建一个新的Form, 以扩展TitleBarTabs UI。从理论上讲, 这种形式并不存在, 并且不能单独查看, 它只是用作选项卡的包装, 这些选项卡稍后将附加在应用程序的入口点中。它的代码内容将非常简单, 并且需要一件简单的事情, 该方法允许用户使用另一个Form实例创建一个新的Tab, 在我们的示例中, 用户创建的每个Tab将是上一步中创建的Form1的实例, 这是为了测试你的应用程序, 你可以更改Form1的内容, 如下所述。
重要 CS文件显然需要是一个Form实例, 而不是简单的C#类, 否则, 每个Form上可用的InitializeComponent方法将不可用, 并且你的代码也不会编译。这可以使用” 解决方案资源管理器” 区域中的助手在创建表单期间确定。
using System;
// Use EasyTabsusing EasyTabs;
namespace YOUR_APPLICATION_NAMESPACE{public partial class AppContainer : TitleBarTabs{public AppContainer(){InitializeComponent();
AeroPeekEnabled = true;
TabRenderer = new ChromeTabRenderer(this);
}// Handle the method CreateTab that allows the user to create a new Tab// on your app when clickingpublic override TitleBarTab CreateTab(){return new TitleBarTab(this){// The content will be an instance of another Form// In our example, we will create a new instance of the Form1Content = new Form1{Text = "New Tab"}};
}// The rest of the events in your app here if you need to .....}}
请注意, 如果你尝试在Visual Studio设计器中查看AppContainer窗体, 则会看到以下内容:
文章图片
你将收到此错误, 因为如前所述, 设计器试图绘制抽象的东西(一旦扩展了TitleBarTabs而不是Form, 我们的表单就是抽象的), 因此仅当你尝试在表单中看到Form时才会抛出异常。设计师, 否则完全有效。
4.将应用程序的入口点设置为AppContainer 继续更改主Program.cs文件的代码, 即应用程序的入口点。在这里, 你需要指示应使用TitleBarTabsApplicationContext而不是默认应用程序启动应用程序(AppContainer的实例)。在这里, 你将指示在你的应用程序中创建的第一个选项卡的内容, 因为这是一个简单的教程, 所以它也是在步骤2中创建的Form1的实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using EasyTabs;
namespace YOUR_APPLICATION_NAMESPACE{static class Program{/// <
summary>
/// The main entry point for the application./// <
/summary>
[STAThread]static void Main(){Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppContainer container = new AppContainer();
// Add the initial Tabcontainer.Tabs.Add(// Our First Tab created by default in the Application will have as content the Form1new TitleBarTab(container){Content = new Form1{Text = "New Tab"}});
// Set initial tab the first onecontainer.SelectedTabIndex = 0;
// Create tabs and start applicationTitleBarTabsApplicationContext applicationContext = new TitleBarTabsApplicationContext();
applicationContext.Start(container);
Application.Run(applicationContext);
}}}
作为最后一步, 你可以像通常一样启动应用程序, 而不必使用无聊的默认表单, 现在你将能够使用Chrome样式标签:
文章图片
编码愉快!
推荐阅读
- 如何使用TCPDF在PDF上添加水印
- 使用C#在Windows 10(控制中心样式)中创建通知
- CS201 分配
- CSc 360 简单文件系统
- Android上点击EditText将不会显示软键盘
- 如何在iPhone或Android上打开WhatsApp打开数字,如+55(51)9988-7766
- 如何使用普通的POST请求将文件发送到apps脚本()
- 如何在Android中获取语言列表
- Android 7本地化问题