Własna przeglądarka internetowa (WebView2)

CHash
Priorytet: Normalny Szkic

Zadanie 1002: Własna przeglądarka internetowa Chromium w C# (Windows Forms)

Cel

Stworzenie prostej przeglądarki internetowej wykorzystującej silnik Chromium (WebView2) w technologii Windows Forms (.NET).

Wymagania

  • Visual Studio (2019 lub nowsze)
  • Zainstalowany workload ".NET desktop development"

Instrukcja wykonania

1. Utworzenie projektu

  1. Otwórz Visual Studio.
  2. Wybierz Create a new project.
  3. Wyszukaj i wybierz szablon Windows Forms App (dla .NET, nie .NET Framework).
  4. Nazwij projekt np. MyBrowser i kliknij Next, a następnie Create.

2. Instalacja pakietu WebView2

Silnik Chromium jest dostępny poprzez pakiet NuGet.

  1. W Solution Explorer kliknij prawym przyciskiem myszy na projekt.
  2. Wybierz Manage NuGet Packages....
  3. Przejdź do zakładki Browse.
  4. Wyszukaj Microsoft.Web.WebView2.
  5. Wybierz pakiet i kliknij Install.

3. Projektowanie interfejsu

  1. Otwórz widok projektanta formularza (Form1.cs [Design]).
  2. Z Toolbox (Przybornika) znajdź kontrolkę WebView2 (może być konieczne przebudowanie projektu, aby się pojawiła).
  3. Przeciągnij WebView2 na formularz.
  4. Ustaw właściwość Dock kontrolki na Fill, aby wypełniła całe okno.
    • Opcjonalnie: Dodaj na górę Panel (Dock: Top), a w nim TextBox (pasek adresu) i Button (przycisk "Idź"), aby sterować nawigacją.

4. Implementacja kodu (Form1.cs)

Kliknij dwukrotnie na formularz (lub wciśnij F7), aby przejść do kodu.

Poniżej znajduje się przykładowy kod, który inicjalizuje przeglądarkę i otwiera stronę startową.

using System;
using System.Windows.Forms;
using Microsoft.Web.WebView2.Core;

namespace MyBrowser
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitializeAsync();
        }

        private async void InitializeAsync()
        {
            // Inicjalizacja środowiska WebView2
            await webView21.EnsureCoreWebView2Async(null);
            
            // Przejście do strony startowej
            webView21.CoreWebView2.Navigate("https://www.google.com");
        }
    }
}

5. Dodatkowa funkcjonalność (Pasek adresu)

Jeśli dodałeś TextBox (np. txtAddress) i Button (np. btnGo), obsłuż zdarzenie kliknięcia przycisku:

private void btnGo_Click(object sender, EventArgs e)
{
    if (webView21 != null && webView21.CoreWebView2 != null)
    {
        string url = txtAddress.Text;
        if (!url.StartsWith("http://") && !url.StartsWith("https://"))
        {
            url = "https://" + url;
        }
        webView21.CoreWebView2.Navigate(url);
    }
}

Uruchomienie

Skompiluj i uruchom aplikację (F5). Powinieneś zobaczyć okno z działającą przeglądarką opartą na Chromium.