Základní ovládací prvky

Opět vytvoříme nový projekt Menu File / New / Project
Vybereme typ projektu Windows Forms App (.NET Framework) C#

Jako minule přidáme jedno tlačítko (na levé záložce Toolbox, v něm Button)
Klikneme na tlačítko, na pravé straně záložka Properties - zde můžeme nastavovat parametry tlačítka.

Přidáme funkce reagující při “příchodu” a “odchodu” myši.
Opět klikneme na tlačítko, na pravé straně záložka Properties, zde přepneme “tlačítkem s bleskem” na události (events).

Ve skupině “Mouse” nalezneme řádky MouseEnter a MouseLeave.
Ve druhém sloupci dvakrát klikneme do prázdné kolonky a objeví button1_MouseEnter a button1_MouseLeave.

A vždy nás v textovém editoru předepíší prázdné metody button1_MouseEnter a button1_MouseLeave.
Tyto metody nepište sami, vždy je “naklikejte”, neboť na pozadí ještě vzniká vazba mezi tlačítkem a funkcí.

Pro přepínáni mezi vizuálním návrhem a zdrojovým textem můžete použít záložky Form1.cs a Form1.cs [Design].
Nebo klávesy F7 a Shift F7.

        private void button1_MouseEnter(object sender, EventArgs e)
        {
            button1.Text = "Je zde mys";
            button1.ForeColor = Color.Red;
        }
 
        private void button1_MouseLeave(object sender, EventArgs e)
        {
            button1.Text = "Uz odesla";
            button1.ForeColor = Color.Blue;
 
        }

Můžete si zkusit přidat reakci na MouseMove.

        private void button1_MouseMove(object sender, MouseEventArgs e)
        {
            button1.Left += 10;
        }

Zdrojový text okna

using import modulů (obdoba #include z C, ale moduly jsou již zkomilované)

namespace celý náš program bude v prostoru jmen, který jsme si vybrali při vytváření projektu

class Form1 třída pro naše okno, odvozená ze standardní třídy Form, později si vybereme nějaký lepsší identifikátor

public třída je dostupná i z jiných jmenných prostorů

partial někde jinde se nalézá další zdrojový text, který bude s tímto zdrojovým textem “smíchán”

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace Introduction
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_MouseEnter(object sender, EventArgs e)
        {
            button1.Text = "Je zde mys";
            button1.ForeColor = Color.Red;
        }
 
        private void button1_MouseLeave(object sender, EventArgs e)
        {
            button1.Text = "Uz odesla";
            button1.ForeColor = Color.Blue;
        }
 
        private void button1_MouseMove(object sender, MouseEventArgs e)
        {
            button1.Left += 10;
        }
    }
}

Implementaci jednotlivé metody píšeme přímo do deklarace třídy.
“Hlavičkové soubory” se nepoužívají.
Překladač si nejprve přečte celou třídu a vynechává těla jednotlivých metod.
Při dalším průchodu zpracovává těla metod.
Uvnitř metody můžeme používat identifikátory deklarované až dále v naší třídě.

Část programu navrhovaná pomocí myši

Podržte Ctrl a klikněte na InitializeComponent ve zdrojovém textu našeho okna.
Zobrazí se soubor Form1.Designer.cs obsahující zdrojový kód vygenerovaný podle našeho návrhu.

Je tam komentář upozorňující, že tuto část nemáte editovat.
Ale můžete si do schránky zkopírovat kousek zdrojového textu a přenést do své části programu.

namespace Introduction
{
    partial class Form1
    {
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(22, 12);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(228, 71);
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            this.button1.MouseEnter += new System.EventHandler(this.button1_MouseEnter);
            this.button1.MouseLeave += new System.EventHandler(this.button1_MouseLeave);
            this.button1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(334, 164);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
        }
 
        private System.Windows.Forms.Button button1;
    }
}

Například zde vidíme, jak se vytvořila již zmíněná “vazba” na metodu button1_MouseEnter

            this.button1.MouseEnter += new System.EventHandler(this.button1_MouseEnter);

uvnitř naší třídy Form1 by stačilo

            button1.MouseEnter += button1_MouseEnter;

Také zde zahlédnete deklaraci proměnné button1

        private System.Windows.Forms.Button button1;

Typ Button je zde uveden i s odpovídajícím prostorem jmen, co kdyby si někdo předefinoval identifikátor Button.

Již vymazaná metoda

Pokud někdy vytvoříte metodu a později zdrojový text metody smažete (u mne button1_Click). Překladač ohlásí chybu

 'Form1' does not contain a definition for 'button1_Click' ...

Tak odstrańte nebo zakomentujte příslušnou řádku

            // this.button1.Click += new System.EventHandler(this.button1_Click);

Hlavní program

Na záložce “Solution Exlorer” je dvakrát klikněte na Program.cs (obdoba funkce main v C)

namespace Introduction
{
    static class Program
    {
        static void Main()
        {
            Application.Run (new Form1());
        }
    }
}

C# na “globální úrovni” dovoluje jen třídy a prostory jmen, nukoliv globální funkce.
Program začne statickou metodou Main ve třídě Program.
Statická metoda je obdobou globální funkce schované dovnitř třídy.
Metoda Main vytvoří novou instanci naší třídy Form1 a naše okno zobrazí.

Vlastnosti, properties

V souboru Form1.cs podžte Ctrl a klikněte na Text na následující řádce

            button1.Text = "Je zde mys";

Objeví se deklarace identifikátoru Text

    string Text { get; set; }

Na deklaraci funkce to nevypadá, chybí kulaté závorky.
Deklarace proměnné to také není, přebývají složené závorky.

Vlastnosti (properties) používáme podobně jako proměnné.
Pokud do nich přiřazujeme hodnotu, volá se nějaká “set” funkce.
Při čtení hodnoty se volá “get” funkce.

Několik ovládacích prvků

Do Form1 přidáme

  • Checkbox, dostane identifikátor checkbox1
  • NumericUpDown numericUpDown1
  • TextBox textBox1
  • ještě jeden TextBox
    • pomocí vlastnosti (name) ve skupině Design nastavíme identifikátor na outputBox
    • nastavíme vlastnost Multiline ve skupině Behavior na true

dvakrát klikneme na tlačítko button a doplníme program

        public void send (string text)
        {
            outputBox.AppendText (text + "\r\n");
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            bool check = checkBox1.Checked;
            int num = (int) numericUpDown1.Value;
            string txt = textBox1.Text;
 
            send ("checkbox: " + check);
            send ("number: " + num);
            send ("text: " + txt);
            send ("");
        }

 
pw/controls.txt · Last modified: 2020/10/06 14:10 by 88.103.111.44
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki