Udostępnij za pośrednictwem


Przewodnik: debugowanie niestandardowych kontrolek formularzy systemu Windows w czasie projektowania

Podczas tworzenia kontrolki niestandardowej często konieczne jest debugowanie jego zachowania w czasie projektowania. Jest to szczególnie istotne w przypadku tworzenia projektanta niestandardowego dla kontrolki niestandardowej. Aby uzyskać szczegółowe informacje, zobacz Przewodnik: tworzenie kontrolki formularzy systemu Windows, która korzysta z funkcji czasu projektowania programu Visual Studio.

Kontrolki niestandardowe można debugować przy użyciu programu Visual Studio, podobnie jak w przypadku debugowania innych klas programu .NET Framework. Różnica polega na tym, że będziesz debugować oddzielne wystąpienie programu Visual Studio, które uruchamia kod kontrolki niestandardowej.

Ważne

Ten artykuł jest przeznaczony głównie dla klasycznej Projektant in-process dla formularzy systemu Windows za pomocą programu .NET Framework. Procedury mogą nie być bezpośrednio stosowane lub w pełni zgodne z projektami przeznaczonymi dla platformy .NET (a nie .NET Framework).

W przypadku projektów programu .NET Framework w Projektant są w pełni obsługiwane tylko projekty, które mogą kompilować z ustawieniami docelowymi platformy Dowolne lub x64. Projekty korzystające z składników ActiveX, COM lub innych składników 32-bitowych mogą mieć problemy ze zgodnością. Projektant platformy Out-Of_Process Framework w wersji zapoznawczej rozwiązuje wiele z tych problemów ze zgodnością. Jednak funkcje czasu projektowania mogą nie działać, a także 64-bitowe Projektant procesu. Aby włączyć platformę Out-Of-Process Framework Projektant, przejdź do pozycji Narzędzia>Opcje>środowiska>w wersji zapoznawczej.

Aby uzyskać więcej informacji na temat Projektant out-of-Process, zobacz Projektant zmienia się od platformy .NET Framework.

Tworzenie projektu

Pierwszym krokiem jest utworzenie projektu aplikacji. Użyjesz tego projektu do skompilowania aplikacji, która hostuje kontrolkę niestandardową.

W programie Visual Studio utwórz projekt aplikacji systemu Windows i nadaj mu nazwę DebuggingExample.

Tworzenie projektu biblioteki kontrolek

  1. Dodaj projekt Biblioteka kontrolek systemu Windows do rozwiązania.

  2. Dodaj nowy element UserControl do projektu DebugControlLibrary. Nadaj jej nazwę DebugControl.

  3. W Eksplorator rozwiązań usuń domyślną kontrolkę projektu, usuwając plik kodu o podstawowej nazwie UserControl1.

  4. Stwórz rozwiązanie.

Punkt kontrolny

Na tym etapie będziesz mieć możliwość wyświetlenia niestandardowej kontrolki w przyborniku.

Aby sprawdzić postęp, znajdź nową kartę o nazwie DebugControlLibrary Components (Składniki DebugControlLibrary) i kliknij ją, aby ją wybrać. Po jego otwarciu zobaczysz kontrolkę wyświetlaną jako DebugControl z ikoną domyślną obok niej.

Dodawanie właściwości do kontrolki niestandardowej

Aby zademonstrować, że kod kontrolki niestandardowej działa w czasie projektowania, należy dodać właściwość i ustawić punkt przerwania w kodzie, który implementuje właściwość .

  1. Otwórz plik DebugControl w edytorze kodu. Dodaj następujący kod do definicji klasy:

    Private demoStringValue As String = Nothing
    <BrowsableAttribute(true)>
    Public Property DemoString() As String
    
        Get
            Return Me.demoStringValue
        End Get
    
        Set(ByVal value As String)
            Me.demoStringValue = value
        End Set
    
    End Property
    
    private string demoStringValue = null;
    [Browsable(true)]
    public string DemoString
    {
        get
        {
            return this.demoStringValue;
        }
        set
        {
            demoStringValue = value;
        }
    }
    
  2. Stwórz rozwiązanie.

Dodawanie kontrolki niestandardowej do formularza hosta

Aby debugować zachowanie kontrolki niestandardowej w czasie projektowania, należy umieścić wystąpienie niestandardowej klasy kontrolek w formularzu hosta.

  1. W projekcie "DebuggingExample" otwórz aplikację Form1 w Projektant formularzy systemu Windows.

  2. W przyborniku otwórz kartę DebugControlLibrary Components (Składniki DebugControl) i przeciągnij wystąpienie DebugControl do formularza.

  3. Znajdź właściwość niestandardową DemoString w oknie Właściwości . Należy pamiętać, że możesz zmienić jego wartość tak, jak dowolną inną właściwość. Należy również pamiętać, że po wybraniu DemoString właściwości ciąg opisu właściwości jest wyświetlany w dolnej części okna Właściwości .

Konfigurowanie projektu na potrzeby debugowania w czasie projektowania

Aby debugować zachowanie niestandardowej kontrolki w czasie projektowania, debugujesz oddzielne wystąpienie programu Visual Studio, które uruchamia kod kontrolki niestandardowej.

  1. Kliknij prawym przyciskiem myszy projekt DebugControlLibrary w Eksplorator rozwiązań i wybierz pozycję Właściwości.

  2. W arkuszu właściwości DebugControlLibrary wybierz kartę Debugowanie .

    W sekcji Rozpocznij akcję wybierz pozycję Uruchom program zewnętrzny. Będziesz debugować oddzielne wystąpienie programu Visual Studio, dlatego kliknij przycisk wielokropka (The Ellipsis button (...) in the Properties window of Visual Studio), aby przejść do środowiska IDE programu Visual Studio. Nazwa pliku wykonywalnego to devenv.exe, a jeśli zainstalowano ją w domyślnej lokalizacji, jej ścieżka to %ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDE.

  3. Kliknij przycisk OK, aby zamknąć okno dialogowe.

  4. Kliknij prawym przyciskiem myszy projekt DebugControlLibrary i wybierz polecenie Ustaw jako projekt startowy, aby włączyć tę konfigurację debugowania.

Debugowanie niestandardowej kontrolki w czasie projektowania

Teraz możesz debugować kontrolkę niestandardową w trybie projektowania. Po rozpoczęciu sesji debugowania zostanie utworzone nowe wystąpienie programu Visual Studio i będzie ono używane do załadowania rozwiązania "DebuggingExample". Po otwarciu formularza Form1 w Projektant formularzy zostanie utworzone wystąpienie kontrolki niestandardowej i zostanie uruchomione.

  1. Otwórz plik źródłowy DebugControl w Edytorze kodu i umieść punkt przerwania na Set metodzie dostępu do DemoString właściwości .

  2. Naciśnij klawisz F5 , aby rozpocząć sesję debugowania. Zostanie utworzone nowe wystąpienie programu Visual Studio. Wystąpienia można rozróżniać na dwa sposoby:

    • Wystąpienie debugowania ma słowo Uruchomione na pasku tytułu

    • Wystąpienie debugowania ma wyłączony przycisk Uruchom na pasku narzędzi Debugowanie

    Punkt przerwania został ustawiony w wystąpieniu debugowania.

  3. W nowym wystąpieniu programu Visual Studio otwórz rozwiązanie "DebuggingExample". Rozwiązanie można łatwo znaleźć, wybierając pozycję Ostatnie projekty z menu Plik . Plik rozwiązania "DebuggingExample.sln" zostanie wyświetlony jako ostatnio używany plik.

    Ważne

    Jeśli debugujesz projekt platformy .NET 6 lub nowszej wersji windows Forms, nie załaduj projektu, zamiast tego użyj tego wystąpienia programu Visual Studio, aby dołączyć debuger do procesu DesignToolsServer.exe . Wybierz element menu Debug Attach to process (Dołączanie debugowania>do przetwarzania). Znajdź plik DesignToolsServer.exe na liście procesów i naciśnij przycisk Dołącz. Aby uzyskać więcej informacji, zobacz Projektant zmienia się od programu .NET Framework.

  4. Otwórz formularz Form1 w Projektant Formularzy i wybierz kontrolkę DebugControl.

  5. Zmień wartość DemoString właściwości. Po zatwierdzeniu zmiany wystąpienie debugowania programu Visual Studio uzyskuje fokus i wykonywanie zatrzymuje się w punkcie przerwania. Możesz wykonać jeden krok przez metodę dostępu właściwości tak samo jak każdy inny kod.

  6. Aby zatrzymać debugowanie, zamknij hostowane wystąpienie programu Visual Studio lub wybierz przycisk Zatrzymaj debugowanie w wystąpieniu debugowania.

Następne kroki

Teraz, gdy możesz debugować niestandardowe kontrolki w czasie projektowania, istnieje wiele możliwości rozszerzenia interakcji kontrolki z środowiskiem IDE programu Visual Studio.

  • Możesz użyć DesignMode właściwości Component klasy, aby napisać kod, który będzie wykonywany tylko w czasie projektowania. Aby uzyskać szczegółowe informacje, zobacz DesignMode.

  • Istnieje kilka atrybutów, które można zastosować do właściwości kontrolki w celu manipulowania interakcją kontrolki niestandardowej z projektantem. Te atrybuty można znaleźć w System.ComponentModel przestrzeni nazw.

  • Możesz napisać projektanta niestandardowego dla kontrolki niestandardowej. Zapewnia to pełną kontrolę nad środowiskiem projektowania przy użyciu rozszerzalnej infrastruktury projektanta uwidocznionej przez program Visual Studio. Aby uzyskać szczegółowe informacje, zobacz Przewodnik: tworzenie kontrolki formularzy systemu Windows, która korzysta z funkcji czasu projektowania programu Visual Studio.

Zobacz też