Jak to zrobić... Combo/Check Box, RadioButton

0

Akcja rozgrywa się aplikacji modern ui.

  1. Mam ComboBoxa w nim kilka itemów. Wybieram jeden i jak sprawdzić który wybrałem?
    Nie działa:
cBox.SelectedItem.ToString();
cBox.Items[cBox.SelectedIndex].ToString(); 

Działa:

ComboBoxItem typeItem = (ComboBoxItem)cboxCity.SelectedItem;
					string value = typeItem.Content.ToString();

// oraz Obsługa zdarzenia SelectionChanged itd... i wtedy ręczne zapamiętywanie.
 

Czemu nie działa 1 przykład ToString() ?

  1. Mam kilkanaście RadioButtonów i ChceckBoxów oczywiście odpowiednio pogrupowane i teraz pojawia się problem jak dotrzeć do
    nich w danej grupie? Ponieważ zmusiło mnie to do ifowania każdego po kolei co nie jest ładne ;p
    Szukam coś na wzór
    NazwaGrupy.IsChecked że znajduje mi w danej grupie zaznaczone checkboxy i radiobuttona.
    Zrobiłem to poprzez wykorzystanie LINQ i śmigam po wszystkich uprzednio dodając je do odpowiedniej tablicy i szukam który jest zaznaczony jednak nie jest to też najlepsze rozwiązanie a nie chcę mi się wierzyć, że robiąc takie grupy nie pomyśleli o czymś takim...
0

Ad2

foreach(Control control in this.Controls)
{
if(control is CheckBox) { ... /*Tutaj sprawdzaj sobie warunki, dodawaj do list, co Ci się podoba*/ }
}

Tak sprawdzisz kontrolki będące na formie, jeżeli masz je na panelu to modyfikujesz wnętrze foreach-a:

 foreach(Control control in this.panel1.Controls)

Ad1

Zaznaczony Item w combo sprawdzisz np. tak:

 MessageBox.Show(comboBox1.SelectedItem.ToString());

O ile o to chodzi

0

Co do 1. To napisałem, że taki sposób mi nie działa.
Co do 2. Tak da radę przeskakiwać tylko po RadioButtonach i CheckBoxach z danej grupy?

0

Odp1: Mi to działa, pokaż kod.
Odp2: Można tutaj wziąć pod uwagę każdą kontrolkę, dostosowujesz do swoich potrzeb.

0
 new Adress(cboxCity.SelectedItem.ToString(), txtStreet.Text, number)
  1. Możesz podać więcej szczegółów? Mam napisane w xamlu radiobuttony głównie całe GUI w jednym <page> i <grid> pogrupowane mam w taki sposób, że zaznaczam kilka i w właściwościach przypisuje grupę.
0

No dobra, konstruktor przyjmuje parametry, pokaż ciało klasy.

0

Xaml, troche inaczej kontrolki działają, sprawdź property Name, bądz value.

0

Jednak nie ma takich properties:

<ComboBox Margin="10,10,0,13" Name="ComboBox1" HorizontalAlignment="Left"
         VerticalAlignment="Top" Width="194" Height="30" KeyUp="metoda">
            <ComboBoxItem Content="Coffie"></ComboBoxItem>
            <ComboBoxItem >Tea</ComboBoxItem>

        </ComboBox>

ComboBoxItem cbi = (ComboBoxItem)ComboBox1.SelectedItem;
            string str1 = cbi.Content.ToString();
//Str1 == Coffie / Tea

Czemu to działa, a pierwszy kod nie? Zmiana podejścia, w WPF w comboboxie możesz mieć butony/checkboxy/objecty/radiobutony (wszystko naraz) i te kontrolki różnią się przeładowują metodę .ToString() ba większość teraz zwraca właśnie nazwę typu. Ogólnie i tak poleca się zamiast z kodu to spinać i sprawdzać co było wybrane ustawić binding i zostawić to automatowi.
::
http://www.c-sharpcorner.com/uploadfile/mahesh/wpf-combobox/

0

Dobra mam. Trzeba narzucić comboboxowi jak ma reprezentować tą zawartość. Można użyć DataTemplate.

1 użytkowników online, w tym zalogowanych: 0, gości: 1