ListBox

ListBox компонента обезбеђује приказивање листе ставки. Може садржати само текстуалне чланове. Корисник може означити једну или више ставки из листе. ListBox креирамо двоструким кликом на иконицу ListBox-а у ToolBox-у. Када смо додали ListBox можемо мењати његову величину и положај у форми помоћу миша и подешавати његове особине у Properties прозору.

Слика 7.31. Прозор Properties Слика 7.32. Форма са ListBox-ом

Пример 1. Када у програму Word одаберемо опцију Find and Replace, и картицу Go To, можемо видети у датом прозору пример ListBox-а.


Слика 7.33. Find and Replace

Подешавање

Позиција, висина, ширина и величина

Особина Location – позиција, подразумева координате горње, леве тачке наше компоненте у односу на форму. Особине Left и Top одређују локацију у односу на горњи леви угао форме, тј. удаљеност од леве и горње ивице форме, датим редом. Size особина одређује величину компоненте. Место особине Size можемо користити особине Width и Height.
Динамички начин подешавања датих особина:

//Kreira novi ListBox
ListBox listBox1 = new ListBox();
//Pozicija ListBox-a 
listBox1.Location = new Point(25, 25);
//Velicina ListBox-a
listBox1.Size = new Size(245, 200);
//Dodaje kreirani ListBox na formu
Controls.Add(listBox1);

Слика 7.34. Форма након подешавања

Name

Name особина означава јединствено име ListBox-а. Помоћу осбине Name приступамо датој компоненти у коду. Помоћу наредног кода можемо поставити назив тј. особину Name датог ListBox-а:

listBox1.Name = "ListBox1";

Font

Font особине представљају Font текста RadioButton-а. Ако кликнемо на Font особине у Properties прозору видећемо опције као што су Font Name, Size и друге. За исте особине можемо користити и дати код:

listBox1.Font = new  Font("Georgia", 20);

BackColor и ForeColor

BackColor и ForeColor особине се користе за подешавање боја позадине и текста који је наведен у ListBox-у. Ако кликнемо на ове особине у прозору Properties, појавиће нам се на екрану Color Dialog за одабир боје. Дате особине можемо подесити и помоћу кода:

listBox1.BackColor = Color.Red; 
listBox1.ForeColor = Color.Blue;
Такође можемо подесити и стил оквира нашег ListBox-а коришћењем BorderStyle особина. BorderStyle особина има три вредности: FixedSingle, Fixed3D и None.

Чланови ListBox-а

Особина Items се користи за додавање и обраду чланова ListBox-а. Чланове можемо додати у ListBox ако у Properties прозору кликнемо на Collections у реду Items. Када кликнемо на Collections појавиће се прозор Strings Collection Editor, у којем ћемо моћи да исписујемо стрингове. Свака линија додана овој колекцији постаће један члан ListBox-а. Чланове ListBox-а можемо додати и помоћу кода на следећи начин:

listBox1.Items.Add("Miki"); 
listBox1.Items.Add("Mini"); 
listBox1.Items.Add("Paja"); 
listBox1.Items.Add("Pluton"); 

Слика 7.35. Форма након подешавања

SelectionMode

Ова особина има четири вредности и односи се на то колико чланова можемо из листе одабрати. Могуће вредности су:
None - ова особина не дозвољава одабир ни једног члана листе,
One - ова особина дозвољава одабир једног члана листе,
MultiExtended - ова особина дозвољава одабир више чланова листе, превлачењем курсора миша,
MultiSimple - ова особина дозвољава одабир више чланова листе, појединачним кликом на сваког члана.

HorizontalScrollbar

Oва особина нам омогућава да додамо хоризонтални клизач када су нам чланови предугачки. Користи се за веће примерке ListBox-а, а у супротном га треба избегавати. Подразумеване вредности су: True за постављање клизача, и False за не постављање клизача.

Означени члан ListBox-а

За демонстрацију преузимања и коришћења селектованог члана требаће нам по један ListBox, дугме и лабела. Кликом на дугме текст лабеле ће се састојати од текста означеног елемента ListBox-а. Изглед наше форме:


Слика 7.36. Форма

Потребан код:

private void button1_Click(object sender, EventArgs e)
{
	label1.Text =  listBox1.Text; 
} 
Након покретања програма и извршења изглед форме може бити:

Слика 7.37. Форма


Напомена: У случају да не означимо ни један елемент у ListBox-у, а кликнемо на дугме "Прикажи одабрано" неће нам се појавити никакав текст на месту лабеле јер ће у том случају бити преузет празан стринг.


Слика 7.38. Форма

Налажење чланова

За демонстрацију налажење чланова ListBox биће нам потребни по један ListBox, TextBox, дугме и лабела. Наредним кодом показаћемо како кликом на дугме можемо проћи кроз ListBoxи селектовати стринг задат у TextBox-у ако је он уопште садржан у ListBox-у, у супротном у лабели ћемо исписати да "Дати текст не постоји у ListBox-у".

private void button1_Click(object sender, EventArgs e)
{
    //Ni jedan clan listBox-a nije selektovan
    listBox1.ClearSelected();
    //Ako nadje u listBox-u text naveden u textBox-u index je nenegativan broj
    //U suprotnom je negativan broj
    int index = listBox1.FindString(textBox1.Text); 
    if (index < 0) 
    { 
        //Ispise tekst obavestenja
        label1.Text = "Dati tekst ne postoji u ListBox-u.";
        //Isprazni textBox za naredno trazenje
        textBox1.Text = String.Empty;
    } 
    else 
    {
        //Selektuje nadjeni tekst u listBox-u
        listBox1.SelectedIndex = index;
        //Isprazni textBox za naredno trazenje
        textBox1.Text = String.Empty;
    }    
} 

Изглед наше форме:

Слика 7.39. Форма након измена

Пример 2. Направимо програм у којем ћемо имати listBox, једно дугме, три лабеле и један TextBox. Програм треба да за унету цену, рачуна цену са попустом, при чему су попусти дати у listBox-у и корисник може сам да изабере колики попуст жели.

Решење :


Слика 7.40. Правимо форму облика Слика 7.41. Преименујемо компоненте

Притиском на дугме "Racunaj", u label-и се исписује одговарајућа порука кориснику.

Код који нам је неопходан да би наш програм радио:

private void button1_Click(object sender, EventArgs e)
{
    //U promenljivu cena smestamo sadrzaj iz textBox-a
    int cena = int.Parse(textBox.Text);
    int popust;
    int novacena;
    //U promenljivu popust smestamo izabrani popust iz listBox-a 
    popust = Convert.TiInt32(listBox1.SelectedItem);
    //Racunamo novu cenu sa popustom i smestamo je u promenljivu novacena
    novacena = (cena * (100 - popust))/100;
    //Ispisujemo cenu sa popustom u labelu
    label3.Text = "Cena sa popustom je: " + novacena.ToString(); + ".";  
} 


Слика 7.42. Изглед форме након покретања програма

Пример 3. Написати програм који за унето име, презиме и име родитеља неке особе, уписује у један listBox дато име и презиме као и средње слово, односно прво слово од имена родитеља те особе. Такође, за унети град и поштански број, у посебан listBox уноси се град, а у посебан поштански број. Дакле, имаћемо три listBox-а, четири textBox-а, лабеле и једно дугме.

Решење :


Слика 7.43. Правимо форму облика Слика 7.44. Преименујемо компоненте

Притиском на дугме "Unesi", u listBox-ове се уноси одговарајће.

Код који нам је неопходан да би наш програм радио:

private void button1_Click(object sender, EventArgs e)
{
    string ime = textBox1.Text;
    string prezime = textBox2.Text;
    //Izdvajamo prvo slovo iz onoga sto je uneto u textBox3
    string srednjeSlovo = (textBox3.Text).Substring(0,1);
    //Dodajemo u listu ime, srednjeSlovo i prezime osobe               
    listBox1.Items.Add(ime + " " + srednjeSlovo + ". " + prezime);
    //Postavljamo textBox-ove da budu prazni za sledeci unos
    textBox1.Text = "";
    textBox2.Text = "";
    textBox3.Text = "";
    string s = textBox4.Text;
    string grad, broj; 
    int pozicija;
    char praznina = ' ';
    //Trazimo indeks praznine, odnosno razmak izmedju postanskog broja i imena grada
    pozicija = s.IndexOf(praznina);
    //Ako je broj manji od 0
    if (pozicija < 0)
        //Ispisujemo poruku o neispravnom unosu
	MessageBox.Show("Neispravan unos!");
        //Ukoliko je unos ispravan
    else 
    {
        //U promenljvu broj smestamo sve sto je od razmaka pa na dalje, odnosno postanski broj
	broj = s.Substring(pozicija + 1);
        //Zatim to smestamo u listBox2
	listBox2.Items.Add(broj);
        //A u promenljivu grad smestamo sve od pocetka, pa do razmaka, odnosno pozicije
	grad = s.Substring(0,pozicija);
        //Zatim to smestamo u listBox3
	listBox3.Items.Add(grad);
        //Postavljamo textBox4 da bude prazan za sledeci unos
	textBox4.Text = "";
    }
}

Слика 7.45. Покренемо програм Слика 7.46. Након клика на дугме

Можемо додати колико год желимо особа у listBox-ове:
Слика 7.47. Изглед форме након уношења особа