Windows Forms

Pro práci s Windows Forms doporučuji používat plnohodnotné Visual Studio. Pokud máte Linux nebo macOS, podívejte se níže.

Visual Studio

Visual Studio má k dispozici grafický editor pro tvorbu UI, proto doporučuji ho pro práci s WinForms používat.

Založení nového projektu by mělo být snadné, stačí zvolit typ projektu Windows Forms App. Pokud by vás mátlo, že existuje také typ projektu Windows Forms App (.NET Framework), tak ten je pro starší verze .NET (ale taky by to mělo fungovat).

Visual Studio Code

Ve VS Code můžete nový WinForms projekt založit příkazem dotnet new winforms. Nevýhoda oproti VS je, že nemáte k dispozici grafický editor UI. Ten ovšem není pro tvorbu aplikací nutný, jen je to s ním pohodlnější.

Rider

Pokud používáte Rider, tak v něm taky grafický editor UI existuje, ale jen na Windows a pro projekty v .NET Framework (tedy starší verze, pro aktuální .NET Core nefunguje).

Linux a macOS

Podpora WinForm na Linuxu a macOS teoreticky existuje (přes Mono), ale spíš bych doporučil použít jiný UI framework, například Avalonia (ten by měl fungovat jak na Linuxu, macOS, tak i Windows). Případně taky existuje MAUI.

Avalonia

Instalace: dotnet new install Avalonia.Templates
Nový projekt: dotnet new avalonia.app (pro začátek doporučuji používat Avalonia App, ne Avalonia MVVM App)

Úlohy na procvičení

Kalkulačka

Naprogramujte jednoduchou kalkulačku ve Windows Forms. Kalkulačka by měla mít dva vstupy pro zadání čísel a čtyři tlačítka odpovídající operacím (+, -, *, /). Po kliknutí na tlačítko se zobrazí výsledek.

screenshot

Nezapomeňte ošetřit dělení nulou. Můžete třeba ukázat chybovou hlášku (MessageBox) nebo znemožnit kliknutí (pomocí Enabled) na tlačítko pro dělení (doporučuji zkusit si obě možnosti).

Učební výstupy

Učební výstupy podávají zhuštěný souhrn základních konceptů a dovedností, které byste měli umět vysvětlit a/nebo použít po každém cvičení.

  • Vytvořit v C# aplikaci s uživatelským rozhraním.
    • Vytvořit ovládací prvky UI (tlačítka, …) a nastavit jejich pozici a vlastnosti.
    • Zpracovávat události ovládacích prvků (kliknutí na tlačítko).