Poslao: 10 Apr 2008 14:57
|
offline
- Pridružio: 13 Maj 2005
- Poruke: 41
- Gde živiš: Čačak
|
Pozdrav svim stručnjacima. Imam problem sa listBoxom (radim u Visual Studio 2005 , C#). Naime ne znam kako da u toku izvršavanja programa
dodeljujem različite boje texta različitim Items-ima u mom listBoxu. Koja će boja ići za koji red zavisiće od nekih mojih proračuna u programu ... Tako da ako se neko bavio ovom tematikom neka napiše koju word of wisdom (može i u VB-u). Unapred hvala na svakoj pomoći.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 10 Apr 2008 17:24
|
offline
- Pridružio: 31 Mar 2005
- Poruke: 448
- Gde živiš: Novi Beograd
|
Za VB sam ovako nesto nasao...(google)
ColorListBox1.Items.Clear(); //Clears the contents of the ListBox
ListItem liRed = new ListItem("Red", "Red"); //Create a Red item
liRed.Attributes.Add("style",
"background-color: RED"); //Make the back color Red
ListItem liBlue = new ListItem("Blue", "Blue"); //Create a Blue item
liBlue.Attributes.Add("style",
"background-color: BLUE"); //Make the back color Blue
ListItem liGreen = new ListItem("Green", "Green"); //Create a Green item
liGreen.Attributes.Add("style",
"background-color: GREEN"); //Make the back color Green
//Add the items to the ListBox
ColorListBox1.Items.AddRange(new ListItem[]{liRed, liBlue, liGreen});
|
|
|
|
Poslao: 11 Apr 2008 18:21
|
offline
- Pridružio: 13 Maj 2005
- Poruke: 41
- Gde živiš: Čačak
|
Da, ali ova klasa 'ListItem' pripada namespace-u {System.Web.UI.WebControls;}, a ja pravim Windows Aplikaciju
(nekoliko formi){System.Windows.Forms;}. Kada sam pokušavao da uključim i
System.Windows.Documents;
i
System.Web.UI.WebControls;
nije ih prepoznavao tako da nije ni prepoznavao klasu ListItem & so on ...
...
Ova sintaksa u zagradi mi malo podseća na JavaScript (background-color: GREEN)
|
|
|
|
Poslao: 11 Apr 2008 18:51
|
offline
- snoop
- Genghis Khan
- Pridružio: 18 Apr 2003
- Poruke: 8134
- Gde živiš: U kesici gumenih bombona...
|
Mislim da ne moze listBox da boji svaki item, ali ListView moze.
ListViewItem itm;
for (int i = 0; i < 10; i++)
{
itm = listView1.Items.Add(i + ". A");
if (i % 2 == 0)
{
itm.BackColor = Color.SkyBlue;
itm.ForeColor = Color.Black;
}
else
{
itm.BackColor = Color.AliceBlue;
itm.ForeColor = Color.Black;
}
}
Prethodno moras dodati kolone i ako dodas vise od jedne kolone, subitems dodajes kao:
itm.SubItems.Add(i + ". A");
|
|
|
|
Poslao: 13 Apr 2008 00:11
|
offline
- Pridružio: 13 Maj 2005
- Poruke: 41
- Gde živiš: Čačak
|
Da. OK. Nego isprobavao sam prvo sa ListView-om u mojoj aplikaciji i ne odgovara mi iz nekih drugih razloga (i nekih veoma čudnih ponašanja u kolonama ...) za ono što želim da postignem sa mojom apl. Našao sam i na netu neki primer kako se podešava boja texta pojedinačnih Item-a ListBox-a, ali u tom primeru je postavljeno:lstColor.DataSource= data; //'data' je neki niz stringova
//koji je globalna promenljiva u tom projektu ...
tako da me je to sprečavalo da u toku izvršavanja programa menjam broj i sadržaj Items-a. Ispali mi exeptoin i kaže 'Items collection cannot be modified when the DataSource property is set' tako da sam udario u zid ...
|
|
|
|
Poslao: 13 Apr 2008 00:21
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Pricam uopsteno posto nisam C# pipnuo vec par godina.
Svaka vizuelna komponenta bi trebala da ima OnPaint ili OnDraw event.
Tu bi trebalo da u realtime-u mozes da menjas boje u toku samog iscrtavanja komponente na ekran.
|
|
|
|
|
Poslao: 13 Apr 2008 21:15
|
offline
- Pridružio: 13 Maj 2005
- Poruke: 41
- Gde živiš: Čačak
|
Među tim linkovima sam našao onaj projekat koji sam gore pominjao (Owner Draw ListBox Control
by Sanjay Ahuja) ali i link ka MSDN-u gde sam našao kako se piše (@bobby) DrawItemEventHandler za listBox.
To mi je rešilo problem, a mislim i da sam pronašao u čemu je bio problem sa onim projektom koji
sam našao na netu. Na MSDN-u piše da svojstvo DrawMode treba postaviti na:
this.listBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
dok je to na mom primeru bilo drugačije:
this.lstColor.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
lstColor.DataSource= data; // data - neki niz stringova
i mislim da je to pravilo problem mojoj aplikaciji, ne znam, nisam upućen ... ali uglavnom našao sam rešenje i Hvala svima na smernicama.
|
|
|
|