Kontrolki RadioButton, CheckBox

Kontrolka RadioButton

Kontrolka RadioButton daje dostęp do dwóch stanów logicznych wzajemnie się wykluczających- aktywny/nieaktywny. Stany wykluczenia reprezentowane są w sposób graficzny i standardowo wyglądają jak poniżej

Kontrolka RadioButton. Visual Studio C#

Wzajemny układ położenia tekstu i pola wyboru można zmienić w momencie projektowania wyglądu formularza formatki

Kontrolka RadioButton układ położenia tekstu. Visual Studio C#

Kontrolki RadioButton pracują w grupach, stąd też powinno się je umieszczać w obszarze kontrolki Panel lub GroupBox. W danej grupie może być aktywna tylko jedna kontrolka.

Stan aktywności kontrolki przechowuje właściwość Checked (False/True)

Kontrolka RadioButton opcja Checked. Visual Studio C#

Zmianę stanu aktywności (Checked) kontrolki RadioButton śledzi zdarzenie CheckedChanged

Kontrolka CheckBox

Kontrolka CheckBox daje użytkownikowi formularza możliwość wyboru opcji prawda/ fałsz (tak/nie) w ustawieniach kombinacji różnych współpracujących ze sobą kontrolek ChekBox. Jest to różnica pomiędzy kontrolkami RadioButton, w których tylko jedna w danej grupie mogła być w logicznym stanie PRAWDA.

Stan wyboru przechowywany jest w polu właściwości Checked. Tę zmianę stanu aktywności śledzi zdarzenie CheckedChanged (podobnie jak w kontrolce RadioButton)

Kontrolka CheckBox może obsługiwać dwa lub trzy stany. Decyduje o tym ustawienie właściwości ThreeState. Gdy ma przypisana wartość False, to obsługiwane są dwa stany (niewybrany, wybrany), w przeciwnym wypadku trzy stany (niewybrany, wybrany, nieokreślony)

Ćwiczenie

Cel: Utwórz formatkę zawierającą kontrolki w układzie jak na poniższej ilustracji

Kontrolka RadioButton i CheckBox. Visual Studio C#

Używając kontrolek RadioButton obsłuż możliwość zmiany wielkości liter dla wprowadzanego imienia i nazwiska w kontrolkach TextBox. Przy pomocy kontrolek CheckBox zablokuj/ odblokuj

Wskazówka:

Zmiana wielkości czcionki używanej na przykład w kontrolce TextBox możliwa jest w kodzie programu przez wykorzystanie właściwości CharacterCasing (Upper, Lower, Normal)

textBox1.CharacterCasing = CharacterCasing.Upper;

Blokowanie dowolnej kontrolki odbywa się przez wykorzystanie właściwości Enabled. Gdy ma przypisaną wartość False to jest nieaktywna

textBox1.Enabled = false;

Kodowanie rozwiązania można skrócić przez przypisani unikalnych tagów (właściwość Tag) kontrolkom typu RadioButton oraz CheckBox. Następnie w odpowiednich zdarzeniach CheckedChanged podpiętych do wybranej grupy kontrolek odwołać się w metodzie switch. Patrz poniższy przykład

Wskazówka:


private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   RadioButton rb= (RadioButton)sender;
   switch (rb.Tag)
    {
     case "imD": 
           if (rb.Checked)textBox1.CharacterCasing = CharacterCasing.Upper;
           break;
     case "imM":
           if (rb.Checked) textBox1.CharacterCasing = CharacterCasing.Lower;
           break;
     }
}

Pełny kod proponowanego rozwiązania

Wskazówka:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CheckBoxRadioButton_WbudowaneStyle
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb= (RadioButton)sender;
            switch (rb.Tag)
            {
                case "imD": 
                     if (rb.Checked)textBox1.CharacterCasing = CharacterCasing.Upper;
                     break;
                case "imM":
                     if (rb.Checked) textBox1.CharacterCasing = CharacterCasing.Lower;
                     break;
            }
        }

        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = (RadioButton)sender;
            switch (rb.Tag)
            {
                case "naM":
                    if (rb.Checked) textBox2.CharacterCasing = CharacterCasing.Lower;
                    break;
                case "naD":
                    if (rb.Checked) textBox2.CharacterCasing = CharacterCasing.Upper;
                    break;
                case "naDowolne":
                    if (rb.Checked) textBox2.CharacterCasing = CharacterCasing.Normal;
                    break;
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox cb= (CheckBox)sender;
            switch(cb.Tag) {
                //blokuj edycję imienia
                case "chBox1":
                    if (cb.Checked) textBox1.Enabled = false;
                       else textBox1.Enabled = true;
                    break;
                //krótsza wersja tego samego co powyżej
                //blokuj edycję nazwiska
                case "chBox2":
                    textBox2.Enabled = !cb.Checked;
                    break;
                //bloku zmiany wielkości liter w imieniu
                case "chBox3":
                    groupBox1.Enabled = !cb.Checked;    
                break;
                //bloku zmiany wielkości liter w nazwisku
                case "chBox4":
                    groupBox2.Enabled = !cb.Checked;    
                break;
            }
        }
    }
}
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz