在WinForms中使用EasyTabs创建具有Chrome样式选项卡的C#应用??程序

本文概述

  • 1.安装EasyTabs
  • 2.创建一个简单的测试表格
  • 3.创建一个AppContainer表单
  • 4.将应用程序的入口点设置为AppContainer
尽管没有很多应用程序需要使用与浏览器相同的选项卡结构, 但是知道如何使用它会很有用。如果要在应用程序中创建自己的嵌入式浏览器, 或者使用某种使用倍数画布的设计应用程序, 并且用户可以对其进行修改, 则使用这样的组件可能非常有用。在本文中, 我们将向你展示如何使用EasyTabs组件在C#中的WinForms应用程序中实现浏览器样式选项卡。
1.安装EasyTabs 要使用C#在WinForms应用程序上实现此类选项卡, 你将需要使用EasyTabs库。 EasyTabs是一个很棒的库, 它允许你使用.NET组件在标题栏空间中带有一组选项卡, 类似于Chrome, Firefox, Trillian或其他网络浏览器。它的源代码托管在Github上, 也是一个有用的示例, 可用来深入了解库的工作原理。要在Visual Studio中的项目上安装此软件包, 请转到解决方案资源管理器, 然后右键单击你的项目。从下拉列表中选择管理NuGet软件包选项:
在WinForms中使用EasyTabs创建具有Chrome样式选项卡的C#应用??程序

文章图片
在管理器中, 转到浏览选项卡并搜索EasyTabs软件包:
在WinForms中使用EasyTabs创建具有Chrome样式选项卡的C#应用??程序

文章图片
选择第一个软件包, 即Luke Stratman的EasyTabs, 并将其安装在你的项目中。安装完成后, 你将可以在代码上使用EasyTabs命名空间。
2.创建一个简单的测试表格 【在WinForms中使用EasyTabs创建具有Chrome样式选项卡的C#应用??程序】选项卡遵循以下原则:每个创建的选项卡都是本机Form的一个实例, 因此我们将创建的一个(即Form1)将成为每个创建的Tab的内容。你可以在创建AppContainer的下一步中通过条件更改此行为, 但是, 为了使你的应用快速运行并了解库的工作原理, 建议你使用一个简单的Form对其进行测试。
在此示例中, 我们的Form1非常简单, 并且具有许多本机组件, 但是它们什么也不做:
在WinForms中使用EasyTabs创建具有Chrome样式选项卡的C#应用??程序

文章图片
但是, 特殊之处在于代码内部。你的表单需要具有用于返回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窗体, 则会看到以下内容:
在WinForms中使用EasyTabs创建具有Chrome样式选项卡的C#应用??程序

文章图片
你将收到此错误, 因为如前所述, 设计器试图绘制抽象的东西(一旦扩展了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样式标签:
在WinForms中使用EasyTabs创建具有Chrome样式选项卡的C#应用??程序

文章图片
编码愉快!

    推荐阅读