How do I do this

  • Thread starter Thread starter Larry Smith
  • Start date Start date
L

Larry Smith

Looking at the ".resx" files produced by the Windows forms designer, I see
nodes like this:

<data name="MyRadioBtn.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 21</value>

If you then read the "94, 21" back into your code as a string (exactly as
seen), how do you then deserialize it so it can be converted back into a
"System.Drawing.Size" object (i.e.,there's no "System.Drawing.Size"
constructor that takes this string as an argument but in any case, I assume
the correct way is to reverse the process that created this string in the
first place). Any help would be appreciated. Thanks.
 
Did you include enough groups in the posting list? Gee :)

This is probably most appropriate for framework.windowsforms. It
certainly isn't related to .clr or .csharp, but most stuff in .csharp
isn't strictly related to C# either.
Looking at the ".resx" files produced by the Windows forms designer, I see
nodes like this:

<data name="MyRadioBtn.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 21</value>

If you then read the "94, 21" back into your code as a string (exactly as
seen), how do you then deserialize it so it can be converted back into a
"System.Drawing.Size" object (i.e.,there's no "System.Drawing.Size"
constructor that takes this string as an argument but in any case, I assume
the correct way is to reverse the process that created this string in the
first place). Any help would be appreciated. Thanks.

This is done with a TypeConverter. There's a TypeConverterAttribute on
the Point class, and it points to a PointTypeConverter class in
System.Drawing. It's got a ConvertFrom method which does this
transformation. You're supposed to use TypeDescriptor to access the
converter, i.e. with TypeDescriptor.GetConverter(typeof(Point)) etc.

-- Barry
 
Larry,

What you want to do is call the static GetConverter method on the
TypeDescriptor class. Passing the type of System.Drawing.Size to it will
return a TypeConverter instance which you can use to call the
ConvertFromString method on. This will return a Size structure back to you
which you can then use.

Hope this helps.
 
Did you include enough groups in the posting list? Gee :)

Only four groups - I'm sure you've seen plenty more :)
This is probably most appropriate for framework.windowsforms. It
certainly isn't related to .clr or .csharp, but most stuff in .csharp
isn't strictly related to C# either.

You may be right but there's a lot of overlap also. You therefore have a
better chance of getting the right answer (though you don't want to violate
good NG etiquette by flooding too many groups)
This is done with a TypeConverter. There's a TypeConverterAttribute on
the Point class, and it points to a PointTypeConverter class in
System.Drawing. It's got a ConvertFrom method which does this
transformation. You're supposed to use TypeDescriptor to access the
converter, i.e. with TypeDescriptor.GetConverter(typeof(Point)) etc.

And so this proves my point. It's exactly what I needed - thanks very much
(appreciated)
 
What you want to do is call the static GetConverter method on the
TypeDescriptor class. Passing the type of System.Drawing.Size to it will
return a TypeConverter instance which you can use to call the
ConvertFromString method on. This will return a Size structure back to
you which you can then use.

Yes, as Barry Kelly also pointed out. Thanks to both of you (couldn't find
this info after my own initial search)
 
Back
Top