Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 2.758 pregleda

Najnovija ↓

ListView AutoResizeColumns u Compact Framework-u 12.05.2009. u 12:51 · pre 212 meseci #1
Imam ListView kontrolu na formi i hocu da mi se header prilagodjava velicini teksta koji se nalazi u njemu i po moguctvu da bude fiksirana sirina svake kolone.
U standardnom FW to nije problem, jer postoji AutoResizeColumns metoda koja resava problem.
Problem je sto CFW ne podrzava ovu metodu. Zna li neko kako bih mogao da dodam i ovu metodu u ListView kontrolu?
Re: ListView AutoResizeColumns u Compact Framework-u 12.05.2009. u 14:40 · pre 212 meseci #3
Probao sam da koristim Graphics klasu ali mi ne izracunava sirinu stringa kako treba (npr prikazuje 96 umesto 70).
Evo koda:
Code:

ListView lv = new ListView();

...

Graphics g = CreateGraphics();            
SizeF stringSize = new SizeF();
Font f = new Font("Tahoma", 7F, FontStyle.Bold);

String strText = "...";

stringSize = g.MeasureString(strText, f);
lv.Columns.Add(strText, Convert.ToInt32(stringSize.Width) , HorizontalAlignment.Left);


Ne kontam sta ne valja?
Re: ListView AutoResizeColumns u Compact Framework-u 12.05.2009. u 17:24 · pre 212 meseci #4
Code:


Font f = new Font("Tahoma", 7F, FontStyle.Bold);
...


stringSize = g.MeasureString(strText, f);


treba da bude:

Code:

stringSize = g.MeasureString(strText, lv.Font);

Re: ListView AutoResizeColumns u Compact Framework-u 13.05.2009. u 10:35 · pre 212 meseci #5
Probao sam i ovo i dalje prikazuje vecu velicinu stringa.

stringSize.Width vraca npr 105 a isti string moze lepo da stane i ako je sirina 70. Kao da se na osnovnu duzinu stringa dodaje jos nesto. Ili mozda nisu iste jedinice u kojima se izrazava pa otuda razlika?
Re: ListView AutoResizeColumns u Compact Framework-u 13.05.2009. u 17:28 · pre 212 meseci #6
Code:

stringSize = g.MeasureString(strText, lv.Font);


Problem sa metodom MeasureString je sto ne vraca 100% tacnu vrednost velicine stringa, jako brza metoda ali u tvom slucaju neprecizna...

Mozes koristiti:

Code:

stringSize=TextRenderer.MeasureText(strText, lv.Font);

...


lv.Columns.Add(strText, Convert.ToInt32(stringSize.Width)+10 , HorizontalAlignment.Left);



TextRenderer daje mnogo precizniju velicinu izracunatog stringa ali je dosta sporiji. Takodje na izracunatu velicinu dodajes jo 10px jer .NET dodaje male margine na text koji oznacava kolonu...
Re: ListView AutoResizeColumns u Compact Framework-u 20.05.2009. u 15:35 · pre 212 meseci #7
Secam se da u starom .net fw (1.1) nisi mogao da postavis labelu sa tekstom koji se poravnjava sa desnom ivicom, a da isti bude boldovan. To je bila neka greska "unutra" i uvek je falilo po parce slova.

Pada mi na pamet da bi to mogao da bude i tvoj problem. Probaj da font postavis na Normal, mozda prodje. Meni je tad padalo na pamet da je MeasureString malo bagovao sa boldovanim tekstom. Ako sam u pravu, opet ne znam kako bi mogao to da resis, osim da zakucas font, a onda da izmeris koeficijent "rasta" teksta kad isti postane boldovan.
Potpis
Nije važno stići prvi. Važno je prvo da stigneš.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme