Создание приложения C # с вкладками в стиле Chrome с использованием EasyTabs в WinForms

Хотя не так много приложений нуждаются в такой структуре вкладок так же, как браузер, знание того, как это сделать, может быть полезным. Использование такого компонента может быть очень полезным, если вы хотите создать свой собственный встроенный браузер в своем приложении или вы работаете с каким-то дизайнерским приложением, которое использует несколько холстов, и пользователь может их изменять. В этой статье мы покажем вам, как реализовать вкладки в стиле браузера в приложении WinForms на C # с помощью компонента EasyTabs.

1. Установите EasyTabs

Для реализации таких вкладок в вашем приложении WinForms с помощью C # вам необходимо использовать библиотеку EasyTabs. EasyTabs — это потрясающая библиотека, которая позволяет вам использовать компонент .NET с набором вкладок в их области заголовка, аналогично Chrome, Firefox, Trillian или другим веб-браузерам. Его исходный код размещен на Github. также полезный пример, чтобы глубоко понять, как работает библиотека. Чтобы установить этот пакет в свой проект в Visual Studio, перейдите в обозреватель решений и щелкните правой кнопкой мыши свой проект. В раскрывающемся списке выберите параметр «Управление пакетами NuGet»:

Менеджер пакетов NuGet проекта Visual Studio

В диспетчере перейдите на вкладку просмотра и найдите пакет EasyTabs:

Установите EasyTabs

Выберите первый пакет, а именно EasyTabs от Luke Stratman, и установите его в свой проект. После завершения установки вы сможете использовать пространство имен EasyTabs в своем коде.

2. Создайте простую форму теста

Вкладки следуют принципу, что каждая созданная вкладка будет экземпляром собственной формы, поэтому мы создадим Form1 будет содержимым каждой созданной вкладки. Вы можете изменить это поведение с помощью условий на следующем шаге во время создания AppContainer, однако, чтобы ваше приложение работало быстро и понимало, как работает библиотека, мы рекомендуем вам протестировать его с помощью одной простой формы.

В этом примере наш Form1 действительно прост и имеет много собственных компонентов, но они ничего не делают:

Простой дизайн формы

Специальное предложение, однако, находится внутри кода. Ваша форма должна иметь метод получения свойства ParentTabs, которое возвращает ParentForm, поэтому обязательно добавьте свойство в исходный код вашей формы:

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 Tabs
using EasyTabs;
namespace Sandbox
{
public partial class Form1 : Form
{
// 2. Important: Declare ParentTabs
protected TitleBarTabs ParentTabs
{
get
{
return (ParentForm as TitleBarTabs);
}
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}

Теперь эта Форма может быть показана на вкладке контейнера.

3. Создайте форму AppContainer

Далее вам потребуется создать новую форму в вашем приложении, которая расширяет пользовательский интерфейс TitleBarTabs. Эта форма не существует теоретически и не может быть просмотрена в одиночку, она просто работает как оболочка для вкладок, которые будут добавлены позже в точке входа вашего приложения. Его кодовое содержимое будет очень простым и требует простой вещи, метода, который позволяет пользователю создавать новую вкладку с другим экземпляром формы, в нашем примере каждая созданная пользователем вкладка будет экземпляром формы Form1, созданной на предыдущем шаге это для того, чтобы протестировать ваше приложение, вы можете изменить содержимое Form1, как упомянуто позже.

Важный

Файл CS, очевидно, должен быть экземпляром Form, а не простым классом C #, иначе InitializeComponent метод, доступный в каждой форме, не будет доступен, и ваш код не будет компилироваться Это можно определить при создании формы с помощью помощника в области обозревателя решений.

using System;
// Use EasyTabs
using 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 clicking
public 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 Form1
Content = new Form1
{
Text = "New Tab"
}
};
}
// The rest of the events in your app here if you need to .....
}
}

Обратите внимание, что если вы попытаетесь увидеть форму AppContainer в конструкторе Visual Studio, вы увидите это:

Ошибка конструктора EasyTabs

Вы получите эту ошибку, потому что, как объяснено, дизайнер пытается нарисовать что-то абстрактное (наша форма абстрактна, когда расширяет TitleBarTabs вместо Form), поэтому исключение будет выдано только в том случае, если вы попытаетесь увидеть форму в конструкторе, в противном случае она полностью допустима.

4. Установите точку входа вашего приложения в качестве AppContainer.

Перейдите к изменению кода вашего основного файла Program.cs, а именно точки входа для вашего приложения. Здесь необходимо указать, что приложение (экземпляр AppContainer) должно быть запущено с использованием TitleBarTabsApplicationContext вместо стандартного. Здесь вы укажете, каким будет содержимое первой вкладки, созданной в вашем приложении, так как это, как уже упоминалось, простое руководство, оно также будет экземпляром Form1, созданным на шаге 2:

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
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppContainer container = new AppContainer();
// Add the initial Tab
container.Tabs.Add(
// Our First Tab created by default in the Application will have as content the Form1
new TitleBarTab(container)
{
Content = new Form1
{
Text = "New Tab"
}
}
);
// Set initial tab the first one
container.SelectedTabIndex = 0;
// Create tabs and start application
TitleBarTabsApplicationContext applicationContext = new TitleBarTabsApplicationContext();
applicationContext.Start(container);
Application.Run(applicationContext);
}
}
}

В качестве последнего шага запустите ваше приложение как обычно, и вместо скучной формы по умолчанию теперь вы сможете использовать вкладки в стиле Chrome:

Вкладки в стиле Chrome в WinForms C #

Ссылка на основную публикацию
Adblock
detector