4. C#

V souboru MainWindow.xaml.cs obsahující kód na pozadí (Code Behind) byla vygenerována základní struktura našeho programu v C#. Vedle konstruktoru MainWindow této třídy byly také vygenerovány soukromé (private) metody bez návratu, které umístíme do oblasti Události:

  • TxtPocetRadku_LostFocus
  • TxtPocetSloupcu_LostFocus
  • TxtMinHodnota_LostFocus
  • TxtMaxHodnota_LostFocus
  • TxtPrvekIndexRadku_LostFocus
  • TxtPrvekIndexSloupce_LostFocus
  • TxtHodnota_LostFocus
  • BtnNahodne_Click
  • BtnJednotlive_Click
  • BtnNulovat_Click
  • BtnJakoText_Click
  • BtnDoMrizky_Click
  • BtnMinimum_Click
  • BtnMaximum_Click
  • BtnPrumer_Click
  • BtnSeradit_Click
  • BtnTranspoziceHlavni_Click
  • BtnTranspoziceVedlejsi_Click
  • BtnKonec_Click

Vzhledem k tomu, že C# kód bude rozsáhlejší, bude vhodné použít značky regionů, kde pro větší přehlednost uvedeme název regionu jak za počáteční značkou regionu (#region), tak i za koncovou značkou (#endregion). Vytvoříme si následující regiony, které budou obsahovat další vnořené regiony. U již vygenerovaných metod si také uvedeme, do kterého regionu budou patřit:

  • Datové složky třídy
  • Pomocné metody
    • Nastavení atributů pole
    • Zobrazení pole
    • Plnění pole
    • Operace s polem 
  • Události
    • Nastavení atributů pole - region bude obsahovat následující metody: 
      • TxtPocetRadku_LostFocus
      • TxtPocetSloupcu_LostFocus
      • TxtMinHodnota_LostFocus
      • TxtMaxHodnota_LostFocus
      • TxtPrvekIndexRadku_LostFocus
      • TxtPrvekIndexSloupce_LostFocus
      • TxtHodnota_LostFocus
    • Plnění pole - region bude obsahovat následující metody: 
      • BtnNahodne_Click
      • BtnJednotlive_Click
      • BtnNulovat_Click
    • Zobrazení pole - region bude obsahovat následující metody: 
      • BtnJakoText_Click
      • BtnDoMrizky_Click
    • Operace s polem - region bude obsahovat následující metody: 
      • BtnMinimum_Click
      • BtnMaximum_Click
      • BtnPrumer_Click
      • BtnSeradit_Click
      • BtnTranspoziceHlavni_Click
      • BtnTranspoziceVedlejsi_Click
      • BtnKonec_Click

                Takto vytvořené regiony lze sbalit, nebo rozbalit a přehledně si tak můžeme zobrazit pouze ty metody, které nás zajímají. 

                Do regionu Datové složky třídy si umístíme seznam jednotlivých datových složek složek třídy (atributů částečné třídy MainWindow), do nichž budeme ukládat a nebo načítat hodnoty. V podstatě se jedná o proměnné, které lze využívat v rámci celé třídy (globální proměnné) - viz Kód 1. Hodnoty v datových složkách využijeme pro specifikaci atributů matice - rozměru a intervalu přípustných hodnot prvků matice. Uveďme pro úplnost, že datové složky jsou přístupné pouze uvnitř třídy (modifikátor přístupu private). Jedna z datových složek s názvem Max je konstantní (klíčové slovo const), tzn. se nebude v průběhu programu měnit. V tomto regionu budeme také deklarovat samotné dvourozměrné pole (matici) obsahující celá čísla. 

                Oproti minulému příkladu JednorozmernePoleWPF umístíme do konstruktoru MainWindow volání metody Inicializace, která nám zajistí vyplnění hodnot v příslušných objektech na formuláři na základě hodnot jednotlivých datových složek třídy - viz Kód 1. Tato metoda bude popsána v následující kapitole.

                namespace DvourozmernePoleWPF
                {
                    /// <summary>
                    /// Interaction logic for MainWindow.xaml
                    /// </summary>
                    public partial class MainWindow : Window
                    {
                        #region Datové složky třídy (globální proměnné)
                 
                        /* Specifikace konstanty pro maximální vertikální (počet řádků) a horizontální
                         * (počet sloupců) rozměr matice - inicializace */
                        const int Max = 10;
                        // Aktuální rozměr pole - počet řádků
                        private int pocetRadku;
                        // Aktuální rozměr pole - počet sloupců
                        private int pocetSloupcu;
                        // Přípustná minimální hodnota (dolní mez) prvku - inicializace
                        private int minHodnota = 1;
                        // Přípustná maximální hodnota (horní mez) prvku - inicializace
                        private int maxHodnota = 100;
                 
                        // Deklarace dvourozměrného pole - matice
                        private int[,] pole;
                 
                        #endregion Datové složky třídy
                 
                        public MainWindow()
                        {
                            InitializeComponent();
                 
                            //Inicializace atributů pole a prvků na formuláři
                            Inicializace();
                        }
                    }
                }

                Kód 1: Deklarace datových složek třídy a volání metody Inicializace v konstruktoru