Základní komponentou ve Windows Forms je formulář (Form).
Po spuštění aplikace se v metodě Main třídy Program
vytvoří instance hlavního formuláře celé aplikace
(po založení WinForms projectu ve VS je výchozí jméno tohoto formuláře Form1).
Formulář je z pohledu OOP třídou. Všechny formuláře mají společného předka (třídu Form).
Od jiných tříd se formuláře liší tím, že mají svoji vizuální část. A Visual Studio (jak napovídá jeho název)
nám umožňuje formuláře vizuálním způsobem navrhovat.
Na formulář můžeme pomocí technologie drag-and-drop klást tzv. ovládací prvky (controls),
což jsou opět třídy, které tentokrát dědí ze společného předka Control
a které mají rovněž svoji vizuální část.
public class Program
{
public static void Main(string[] args)
{
MainForm mainForm = new MainForm();
Application.Run(mainForm);
}
}
public class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
// ...
}
Následuje stručný popis nejběžnějších ovládacích prvků.
Pokud chceme na formuláři zobrazit text, použijeme popisku (třída Label).
Label labelName = new Label();
labelName.Text = "Zadejte jméno a příjmení:";
this.Controls.Add(labelName);
Aby byla aplikace interaktivní (reagovala na požadavky uživatele, např. na kliknutí myši),
můžeme použít ovládací prvek tlačítko (třída Button).
Button buttonSave = new Button();
buttonSave.Text = "Uložit";
this.Controls.Add(buttonSave);
Ovládací prvek textbox (třída TextBox)
se hodí pro případy, kdy očekáváme od uživatele nějaký vstup.
Do textboxu může zadat volný text.
TextBox textBoxName = new TextBox();
this.Controls.Add(textBoxName);
string nameEntered = textBoxName.Text();
Pro zadání čísla lze použít ovládací prvek NumericUpDown.
NumericUpDown numericUpDownYearOfBirth = new NumericUpDown();
this.Controls.Add(numericUpDownYearOfBirth);
int yearEntered = Convert.ToInt32(numericUpDownYearOfBirth.Value);
Pokud má uživatel zadat údaje týkající se datumu nebo času, hodí se komponenta datetimepicker
(třída DateTimePicker).
DateTimePicker dateTimePickerBirthDate = new DateTimePicker();
this.Controls.Add(dateTimePickerBirthDate);
DateTime dateEntered = dateTimePickerBirthDate.Value;
Pro zadání hodnot typu "ano/ne" ("pravda/nepravda", "true/false", "on/off" apod.)
je vhodné použít komponentu CheckBox.
CheckBox checkBoxIncludeInPoll = new CheckBox();
this.Controls.Add(checkBoxIncludeInPoll);
bool answer = checkBoxIncludeInPoll.Checked;
Pro výběr jedné z (ne příliš mnoha) možností můžeme použít
sadu ovládacích prvků typu RadioButton.
RadioButton radioButtonSingle = new RadioButton();
RadioButton radioButtonMarried = new RadioButton();
// ...
this.Controls.Add(radioButtonSingle);
this.Controls.Add(radioButtonMarried);
bool isSingle = radioButtonSingle.Checked;
bool isMarried = radioButtonMarried.Checked;
// ...
Pro práci s obrázkem, resp. jeho umístění na formulář se hodí picturebox (třída PictureBox).