all groups > dotnet windows forms designtime > july 2006 >
You're in the

dotnet windows forms designtime

group:

Setting GenerateMember property from ControlDesigner derived class


Setting GenerateMember property from ControlDesigner derived class vladimir.khvostov NO[at]SPAM gmail.com
7/17/2006 5:07:04 PM
dotnet windows forms designtime: Hi,
I implemented a simple control - HorizontalBevel that can be used to
render horizontal lines on a form (2 pixel in Height). I wanted to
display only what make sense for this control in properties window, so
I wrote a HorizontalBevelDesigner class, which removes most properties
by overriding PostFilterProperties() method.

I also want to set GenerateMember to false, so that only local variable
is generated in the InitializeComponent(), instead of member variable.

Sound simple, but already spent about 45min. trying to figure this out.
Neither Component nor ComponentDesigner have this property.

Regards,
-- Vladimir
Re: Setting GenerateMember property from ControlDesigner derived class Roman
7/18/2006 12:00:00 AM
Hi Vladimir.
Thank you for this sample. It is useful for me.
--
Thanks Roman
--
[quoted text, click to view]

Re: Setting GenerateMember property from ControlDesigner derived class Vladimir Khvostov
7/18/2006 12:14:16 AM
OK. Found out how to do this:
If someone is interested:

bool SetGenerateMemberProperty(bool value)
{
IExtenderListService service =
(IExtenderListService)this.GetService(typeof(IExtenderListService));

IExtenderProvider provider =
Array.Find<IExtenderProvider>(service.GetExtenderProviders(),
delegate(IExtenderProvider item) { return
item.GetType().FullName ==
"System.ComponentModel.Design.Serialization.CodeDomDesignerLoader+ModifiersExtenderProvider";
});

MethodInfo methodInfo =
provider.GetType().GetMethod("SetGenerateMember", BindingFlags.Public |
BindingFlags.Instance);

if (methodInfo != null)
{
methodInfo.Invoke(provider, new object[] { base.Component,
false });
return true;
}

return false;
}

-- Vladimir

[quoted text, click to view]

AddThis Social Bookmark Button