C#-ban hogyan tudom a ComboBox tartalmát randomizálni? (Bővebben lenn)
Szeretnék egy programot amin van 'N' db ComboBox és egy Button.
A program lényege:
Egy ComboBox-ban 50 különböző sor van felvéve, mindegyik ComboBox-ban ugyan ezek a sorok vannak.
A programnak azt kellene csinálnia, hogy a gomb lenyomásakor az összes ComboBox tartalmát randomizálja úgy, hogy ne legyen köztük két egyforma.
Ezt hogyan tudnám megcsinálni?
Gombolom a Gomb Click eseményére kellene írni valamit.
Ehhez kérnék segítséget.
Továbbá, esetleg azt is meg lehetne-e csinálni, hogy a ComboBox-ok számát is randomizálom? Mert nem minden esetben lenne szükség az 'N' számú ComboBox-ra.
A segítségeket előre is köszönöm!
Szépen megfogod:
for(int i=0; i<N; i++)
{
ComboBox b = new ComboBox();
b.Left = ...
b.Top = ...
this.Controls.Add( b );
}
és van n db comboboxod
A tartalmat meg egyszerű hogy 1x forduljon elő egy elem.
Random r = new Random();
List<int> items = new Items(){ 1,2,3,4,5,6,7,8,9,10 };
while( items.Count>1 )
{
int index = r.Random(0, items.Count-1);
int actual = items[index];
...
items.RemoveAt(index);
}
Köszönöm a választ.
Betettem a gombra ezt:
for(int i=0; i<'N'; i++)
{
ComboBox b = new ComboBox();
b.Left = 180;
b.Top = 50;
this.Controls.Add( b );
}
N egy már korábban generált random szám 8 és 15 között.
A gond az, hogy csak 1db comboboxot hoz létre és az is üres.
Vagy lehet, hogy létrehozza csak egymás alatt és nem látom a többit?
Ilyenkor mit lehet tenni?
Hol tudom előre megadni milyen értékek szerepeljenek a randomra létrehozott combobox-okban?
Ezt a kódot pedig a SelectedIndexChanged seményre kell tennem?
Random r = new Random();
List<int> items = new Items(){ 1,2,3,4,5,6,7,8,9,10 };
while( items.Count>1 )
{
int index = r.Random(0, items.Count-1);
int actual = items[index];
... // Ide mit?
items.RemoveAt(index);
}
Bocsi, ennyire még nem megy, hogy teljesen átlássam.
Előre is köszi!
Nos igen, mindegyiknek ugyanaz a poziciója, vagyis csak 1 et látsz, kitalálsz valami okos dolgot hogy kiszámold a pozíciókat.
Az elemeket megadod ahol létrehozod a comboboxot, persze lehet később is módósítani, ez ugyanolyan kontrol mint ha a szerkesztő nézetben ráhúznád.
Esetleg eltárolhatod egy listában és úgy egyszerűen elérheted az összes comboboxot;
a metóduson kívül deklarádod: List<ComboBox> comboBoxok = new List<ComboBox>();
aztán szépen hozzáadogatod:
for(...)
{
int db=0;
ComboBox b = new ComboBox();
b.Left = i*50; így egy sorba kerül mind, ha máshogy szeretnéd gondolodj rajta kicsit :D
b.top = 50;
Ha itemsben van az összes elem, akkor gondolom szétszeretnéd osztani, tehát elég ha csak n darab elemet raksz 1 comboboxba
while( items.Count>1 && db < 10 ) // 10db elem kerül bele
{
int index = r.Random(0, items.Count-1);
int actual = items[index];
b.Items.Add( actual.ToString() );
items.RemoveAt(index);
db++;
}
b.Name = "combo" + i.ToString(); nem árt elnevezni hogy ha véletlen egyszer kellene majd vmiért :D
És ugye a SelectedIndexChanged-et is megkell adnod neki: b.SelectedIndexChanged += ...
comboBoxok.Add(b);
this.Controls.Add(b);
}
Ha meg törölni akarod akkor pl: this.controls.remove( comboBoxok[0] ); comboBoxok.removeat(0);
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!