C# težava s combobox-om

Vse o programiranju na in za PC

Moderatorji: Kroko, tilz0R

C# težava s combobox-om

OdgovorNapisal/-a S55RU » 31 Jan 2018, 14:34

Pozdravljeni,

Že lep čas se zafrkavam z enim programčkom, ki ga pišem v C#.
Težava je v tem, da imam 2 combobox-a z prednastavljeno vsebino.
Rad bi, da program ponudi možnosti izbire v drugem comboboxu glede na izbiro v prvem.

V prvem comboboxu so sledeče izbire:
Interno
Ven
Noter
(ter možnost vpisa druge izbire)

V drugem comboboxu so izbire:
N/A
1 v 2
1 v 3
2 v 1
2 v 3
...

Rad bi, da bi imel uporabnik, ki izbere možnost Interno v prvem okencu, v drugem okencu na voljo vse možnosti razen N/A v drugem. Vsi ostali izbori pa naj dobijo možnost N/A v drugem (lahko tudi tako, da se jim drugi combobox sploh ne prikaže oziroma nimajo možnosti izbire). S čim to doseči?

Poskušal sem:
Koda: Izberi vse
if (combox1.selectedIndex = 0) combobox2.selectedIndex >0;
else combobox2.selectedIndex <1


Pa mi MS Visual Studio jamra. Isto če namesto s selectedIndex poskušam s selectedItem ali čem podobnim. Na googlu ne najdem (znam najti) nič pametnega, kako rešiti problem. Ima kdo kakšen nasvet? Hvala.
Uporabniški avatar
S55RU
 
Prispevkov: 215
Pridružen: 18 Jan 2015, 01:18
Kraj: Posočje
Zahvalil se je: 54 krat
Prejel zahvalo: 23 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 4

Re: C# težava s combobox-om

OdgovorNapisal/-a zanka » 31 Jan 2018, 14:56

A ni ponavadi dvojni enačaj?
Uporabniški avatar
zanka
 
Prispevkov: 1877
Pridružen: 17 Mar 2016, 00:16
Kraj: Krško
Zahvalil se je: 95 krat
Prejel zahvalo: 161 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 31

Re: C# težava s combobox-om

OdgovorNapisal/-a S55RU » 31 Jan 2018, 15:23

Imaš prav. V oklepaju if stavka morata biti 2 enačaja, v pogojnem stavku dela z enim
Ampak še zmeraj ne deluje tako, kajti selectedIndex ne more biti > ali <, je lahko le eden izbran indeks.

Moja rešitev:
Koda: Izberi vse
private void combobox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (combobox1.SelectedIndex == 2 ||combobox1.SelectedIndex == 3) combobox2.SelectedIndex = 0;
        }
Uporabniški avatar
S55RU
 
Prispevkov: 215
Pridružen: 18 Jan 2015, 01:18
Kraj: Posočje
Zahvalil se je: 54 krat
Prejel zahvalo: 23 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 4

Re: C# težava s combobox-om

OdgovorNapisal/-a bpavsic » 31 Jan 2018, 15:58

Ne moreš "vklopit/izklopit" opcije v comboboxu...

Lahko narediš edino to, da če je nastavljena na določen index, jo prestaviš na drugega... (v spodaj napisanem primeru na naslednjo opcijo, torej index 1).

Prvi event (na combobox1) skrbi za to, da drugi nima neveljavne vrednosti (po tvojih pravilih) ob spremembi vrednosti prvega. Drugi event (na combobox2) pa ne dovoli prestavitve na N/A (oz. selectedindex 0) v primeru, če je prvi na "interno" oz. selectedindex 0.

Koda: Izberi vse
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBox2.Enabled = comboBox1.SelectedIndex == 0;
            if (comboBox1.SelectedIndex != 0) comboBox2.SelectedIndex = 0;
            else if (comboBox2.SelectedIndex == 0) comboBox2.SelectedIndex = 1;
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            if ((comboBox1.SelectedIndex == 0) && (comboBox2.SelectedIndex == 0))
                comboBox2.SelectedIndex = 1;           
        }
My brain has too many windows open.
bpavsic
 
Prispevkov: 561
Pridružen: 22 Jan 2015, 14:46
Kraj: MB / MS
Zahvalil se je: 142 krat
Prejel zahvalo: 174 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 177

Re: C# težava s combobox-om

OdgovorNapisal/-a bpavsic » 31 Jan 2018, 16:06

2. varianta pa je, da glede na spremembe prvega comboboxa, napolniš vrednosti za izbiro v drugem:

Koda: Izberi vse
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBox2.BeginUpdate();
            try
            {
                comboBox2.Items.Clear();
                if (comboBox1.SelectedIndex == 0)
                    comboBox2.Items.AddRange(new string[] { "1 v 2", "1 v 3", "2 v 1", "2 v 3" });
                else
                    comboBox2.Items.Add("N/A");
                comboBox2.SelectedIndex = 0;
            }
            finally
            {
                comboBox2.EndUpdate();
            }
        }
My brain has too many windows open.
bpavsic
 
Prispevkov: 561
Pridružen: 22 Jan 2015, 14:46
Kraj: MB / MS
Zahvalil se je: 142 krat
Prejel zahvalo: 174 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 177

Re: C# težava s combobox-om

OdgovorNapisal/-a S55RU » 31 Jan 2018, 19:04

Varianta 2 mi je bolj všeč, tako da sem jo že implementiral v kodo. Problem rešen, gremo dalje iskati nove probleme :D
Uporabniški avatar
S55RU
 
Prispevkov: 215
Pridružen: 18 Jan 2015, 01:18
Kraj: Posočje
Zahvalil se je: 54 krat
Prejel zahvalo: 23 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 4


Vrni se na Programski jeziki

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost