[Python.NET] Is there a chance to imprive Python for .net to let "System.Windows.Forms.Form().Controls" be indexable?

Barton barton at BCDesignsWell.com
Sun Sep 4 01:04:39 CEST 2011


Here's a snippet that may help a little if you really need to get at a 
control that has been added to a parent control:

import clr
import System
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form, Button

myBtnName = "button1"

form1 = Form()

def AddButton(form, btnName):
     btn = Button()
     btn.Name = btnName
     btn.Text = "Click Me"
     form.Controls.Add(btn)

AddButton(form1, myBtnName)

ctrls = form1.Controls.Find(myBtnName, False)
btn = ctrls[0]
if isinstance(btn, Button):
     print repr(btn)
     print btn.Name

System.Windows.Forms.Application.EnableVisualStyles()
System.Windows.Forms.Application.Run(form1)



On 9/2/2011 8:17 PM, Barton wrote:
> Very interesting;
> Apparently, Microsoft doesn't think that it is a useful thing to index 
> directly into a System.Windows.Forms.Control.ControlCollection Class.
> The collection is still iterable in versions above 2.0, but the class 
> no longer supports indexing. So:
>
> >>> print form.Controls[0]         # works in pythondotnet built on 
> .NET 2.0 on prior.
> <System.Windows.Forms.Button object at 0xaa8bc6c>
> >>>
>
> for ctrl in form.Controls:
>     print ctrl    # works in .NET 3.0 and above.
>
>
> Compare
> http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection_properties.aspx
> with
> http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection_properties%28VS.80%29.aspx
> and you'll see that all ICollection and IList properties have been 
> removed.
>
> Reasons why are a good topic for future discussion.
>
> On 8/31/2011 10:30 PM, 刘振海 wrote:
>> Hi,
>>
>> here  is the code:
>>
>> import clr
>> clr.AddReference("System.Windows.Forms")
>> from System.Windows.Forms import Form,Application,Button
>> form=Form()
>> form.Controls.Add(Button())
>> print form.Controls[0] #this code didnt work with an error say "not 
>> indexable object"
>>
>> but this worked in ironpython,it seems in ironpython it treats the 
>> "form.Controls" as an list like object
>> I can only get the form.Controls value use the 
>> "form.Controls.get_Item(0)" in the python for .net
>> So is there a chance to imprive Python for .net to have 
>> that characteristic?
>>
>> thanks
>>
>>
>> _________________________________________________
>> Python.NET mailing list -PythonDotNet at python.org
>> http://mail.python.org/mailman/listinfo/pythondotnet
>
>
> _________________________________________________
> Python.NET mailing list - PythonDotNet at python.org
> http://mail.python.org/mailman/listinfo/pythondotnet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythondotnet/attachments/20110903/a09dc25e/attachment.html>


More information about the PythonDotNet mailing list