Click to See Complete Forum and Search --> : Create a font using a type converter.


NAlvar
May 19th, 2004, 05:07 AM
Hello,

I', attempting to convert a string description into a font and I'm successful except for updating the style.
I'm using a type converter, here is the code:



Dim tobj As Type = obj.GetType

Dim pi As PropertyInfo = tobj.GetProperty("Font")

Dim propvalue as string = "Tahoma;10"

Dim valueobject As Object = TypeDescriptor.GetConverter(pi.PropertyType).ConvertFromString(propvalue)



With this propvalue, it works. ;) The valueobject created is a font. But I can't define the style of the font, because if I assign the propvalue as follows:

Dim propvalue as string = "Tahoma;10;Bold"

an exception is throwed:

Run-time exception thrown : System.ArgumentException - Failed to parse Text("Tahoma;10;Bold") expected text in the format "name, size[units[, style]]".

Does anyone know what text should be into propvalue?

Thanks in advance.

NAlvar

DeepButi
May 19th, 2004, 06:06 AM
NAlvar,
as the error message indicates, you are missing the units (pixels, points, inches, ...).

Valid values for Units: Px, Pt, Pc, In, Mm, Cm, %

This easier code works for me:

Dim obj As Font = New Font("Tahoma", 10)
Dim propvalue As String = "Tahoma,12Pt,Bold"
Dim valueobject As Font = System.ComponentModel.TypeDescriptor.GetConverter(obj).ConvertFromString(propvalue)


Hope it helps

NAlvar
May 19th, 2004, 08:27 AM
Dear DeepButi,

thanks for your advise, but it doesn't work to me.

After executing your example code, the font defined into the valueobject is the default font :


?valueobject.ToString
"[Font: Name=Microsoft Sans Serif, Size=8, Units=3, GdiCharSet=1, GdiVerticalFont=False]"


Have you got more ideas?

Tot i així, gràcies per l'ajuda.

DeepButi
May 19th, 2004, 09:21 AM
NAlvar,
oopppsss :blush:

Dim propvalue As String = "Tahoma,12Pt"

works ... and I assumed "...,bold" would also, but it doesn't.

Unable to find the correct names for styles. Will check it.

PS. De res home, per això estem ;)

DeepButi
May 19th, 2004, 10:14 AM
NAlvar,

Dim propvalue As String = "Tahoma,12Pt,style=bold"
Dim valueobject As Font = System.ComponentModel.TypeDescriptor.GetConverter(Font).ConvertFromString(propvalue)


(easier: obj is not needed)

Hope it helps