The continuing saga:

Color worked just fine as noted in earlier replies.

DefaultValue(typeof(Color), "Control")

Font is another story.  In looking at the info for the DefaultValue
constructor:

=========================
[C#]
[AttributeUsage(AttributeTargets.All)]
public DefaultValueAttribute(Type type, string value);

Parameters
type
  A Type that represents the type to convert the value to.
value
  A String that can be converted to the type using the TypeConverter for
the type and the U.S. English culture.

=========================

I can't see why the following would fail for a custom font property:

DefaultValue(typeof(Font), "Microsoft Sans Serif, 8.25pt")

Everything compiles okay, but when you look at the unchanged property in
the property grid, it still highlights bold falsely denoting a change from
the default value.

The constructor documentation above says this all uses the TypeConverter
for the type, so closer experimentation with the FontConverter yields the
following results where the myControl.AltFont is a certified, unchanged
default font.


new System.Drawing.FontConverter().ConvertToString(myControl.AltFont)

gives me "Microsoft Sans Serif, 8.25pt".  I get the same result from using
ConvertToInvariantString().

Likewise:

myControl.AltFont = (Font) new System.Drawing.FontConverter
().ConvertFromString("Microsoft Sans Serif, 8.25pt")

does yield a good, default font value that I can assign to a control and
see it really is the plain old vanilla default.  ConvertFromInvariantString
() yields the same results.

The cast is necessary above because the ConvertFromString returns an object
rather than a true Font.

I was concerned that the ColorConverter and the FontConverter were
different here, but the ConvertFromString() methods on both return object
rather than the type, so the constructor must be handling the casting down
inside somewhere since it works for Color.

I don't understand why

DefaultValue(typeof(Color), "Control")

works properly to signify a default value for a color in the property grid,
but

DefaultValue(typeof(Font), "Microsoft Sans Serif, 8.25pt")

does not work properly for a font.

Anyone else know the real story on this one?

Any help would be appreciated.

Jeff


On Thu, 16 May 2002 06:25:11 -0700, Jeff <[EMAIL PROTECTED]>
wrote:

>On Thu, 16 May 2002 07:45:51 -0500, Jacob Grass
><[EMAIL PROTECTED]> wrote:
>
>>DefaultValue(GetType(Color), "Control")
>
>Thanks, I should have read ALL the overloads more carefully to see the one
>that included type.
>
>However, this still does not work because the compiler reports:
>"'System.Drawing.Color' denotes a 'class' where a 'variable' was expected"
>
>I did find, however, that the following (C#) DOES work perfectly:
>
>DefaultValue(typeof(Color), "Control")
>
>Thanks so much for pointing me to that overload, DOH!!!
>
>Jeff
>

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to