Različite boje texta u listBoxu (C#, VB)..

Različite boje texta u listBoxu (C#, VB)..

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.
offline
  • drejk 
  • Ugledni građanin
  • 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});



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)

offline
  • 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");

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 ...

offline
  • 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.

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Da, slazem se sa Bobby-jem, ako ti vec neodgovara ListView.

Prelistaj ove primere:
http://www.google.com/search?q=listbox+owner+draw&.....=firefox-a

Ja licno, ne radim sa bindovanjem podataka nego sve radim manuelno pa imam vecu kontrolu.

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.

Ko je trenutno na forumu
 

Ukupno su 912 korisnika na forumu :: 43 registrovanih, 12 sakrivenih i 857 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., airsuba, Alexandar-1973, Alibaba1981, bojank, cenejac111, cikadeda, CikaKURE, Djokislav, Dovla, dushan, FileFinder, FOX, goxin, HogarStrashni, ikan, JOntra, Krvava Devetka, Lucije Kvint, mercedesamg, MiGac, mikrimaus, Milos ZA, Misirac, Mlav, MrNo, nebojsag, nemkea71, nesa1962, nextyamb, NoOneEver Dreams, Rakenica, Sirius, Srle993, stalja, stankolich, Stoilkovic, Tas011, Toper, Trpe Grozni, uruk, vathra, zexoni