<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16640" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2>Dear Charles,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2>I ran into the same problem you are experiencing a few 
months ago while using Python 1.1.&nbsp; The problem is that the WinForms 
reflection is looking for static properties.&nbsp; IronPython 1.1 objects, being 
dynamic, lack the proper metadata to guide the WinForms classes to do the right 
thing.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2>Try 1.1.1.&nbsp; That will allow WinForms to find a *whole* 
lot of things (including all your public methods).&nbsp; My guess is that it may 
be easier for you to turn off these extra elements rather than to create a 
separate C# assembly to hold static interfaces.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2>It would be great to clean up these staticized properties 
in&nbsp;1.1.2 to include only properties defined with the "property" 
function.&nbsp; That would really help anyone using static data binding in 
WinForms (or any other part of the BCL for that matter).</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2>Hope that helps,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=232475314-23042008><FONT face=Arial 
color=#0000ff size=2>Rocco</FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> users-bounces@lists.ironpython.com 
[mailto:users-bounces@lists.ironpython.com] <B>On Behalf Of </B>Charles 
Mason<BR><B>Sent:</B> Wednesday, April 23, 2008 9:31 AM<BR><B>To:</B> 
users@lists.ironpython.com<BR><B>Subject:</B> [IronPython] 
System.Windows.Forms.PropertyGrid and Python objects<BR></FONT><BR></DIV>
<DIV></DIV>So I've been through hell last night tearing my hear out trying to 
figure out how to work PropertyGrid properly with a Python class 
object.<BR><BR>Things I've tried:<BR><BR>1) In Python, 
PropertyGrid.SelectedObject = pythonobj <BR>2) In Python, Deriving PropertyGrid 
and overriding CreatePropertyTab<BR>3) In C#, deriving a new class from 
PropertyGrid and implementing<BR><BR>public void SetPythonObject(Object 
obj)<BR>{<BR>&nbsp; this.SelectedObject = obj;<BR>}<BR><BR><BR>4) In C#, 
Overriding CreatePropertyTab() (I get a warning about hiding a baseclass 
implementation -- sounds like this isn't overrideable)<BR>5) In C#, creating a 
wrapper class:<BR><BR>class CustomHolder<BR>{<BR>&nbsp; private Object heldObj = 
null;<BR>&nbsp; public Object held {<BR>&nbsp;&nbsp;&nbsp; get { return heldObj; 
}<BR>&nbsp;&nbsp;&nbsp; set { heldObj = value; }<BR>&nbsp; }<BR>&nbsp; 
CustomHolder(Object obj) <BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; this.held = 
obj;<BR>&nbsp; }<BR>}<BR><BR>and in the derived PropertyGrid 
class:<BR><BR>public void SetPythonObject(Object obj)<BR>{<BR>&nbsp; 
this.SelectedObject = new CustomHolder(obj);<BR>}<BR><BR>--<BR><BR>Only #5 so 
far has done anything worthwhile: In the property grid as a single field I get 
what looks like str(obj) output:<BR>&lt;module.CLASSNAME instance at 
0x................&gt;<BR><BR>I've also considered using the TypeDescriptor() 
class/methods to create each property grid entry myself, but I don't see 
anything at all about where PropertyGrid gets its property fields from -- see 
#4.<BR><BR>Is there any way to do this conveniently (I'd prefer not to write a 
C# custom dll, but am amiable to the requirement of doing so)?<BR><BR>Chuck 
</BODY></HTML>