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 1292 korisnika na forumu :: 30 registrovanih, 5 sakrivenih i 1257 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: _Rade, babaroga, Brana01, ccoogg123, DonRumataEstorski, dozorni, Fabius, Goran 0000, goxin, ikan, jackreacher011011, Karla, Kubovac, kybonacci, ljuba, marsovac 2, Mcdado, minmatar34957, nemkea71, NoOneEver Dreams, oldtimer, robertino, Srle993, ss10, vlad the impaler, Vlad000, voja64, zdrebac, Zoca, zzapNDjuric99