[ marko_81 @ 12.05.2009. 11:51 ] @
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?
[ Igor Gajic @ 12.05.2009. 12:37 ] @
Imas u Graphics klasi f-ju MeasureString koja ti vraca velicinu iscrtanog stringa u pixelima sa datim fontom i na osnovu toga podesi sirinu kolone...

http://msdn.microsoft.com/en-u...hics.measurestring(VS.80).aspx
[ marko_81 @ 12.05.2009. 13:40 ] @
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?
[ Igor Gajic @ 12.05.2009. 16:24 ] @
Code:


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


stringSize = g.MeasureString(strText, f);


treba da bude:

Code:

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

[ marko_81 @ 13.05.2009. 09:35 ] @
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?
[ Igor Gajic @ 13.05.2009. 16:28 ] @
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...
[ bunker @ 20.05.2009. 14:35 ] @
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.