Formのサンプルにメニューを追加してみます。 メニューを表示して"New"を選択すると、ポップアップメニューを表示します。

MSDNのC#のサンプルそのままではありませんが、イベントハンドラのdef windowNewMenu_onclick(sender, arge)を登録するところは明確に違うところです。
サンプルではイベントハンドラをToolStripMenuItemのコンストラクタの引数に指定しますが、IronPythonでは.Clickに代入します。
02_form_menustrip.ipy
# coding=Shift_JIS
# IronPython Example: MenuStrip
# -
# @author: YasuhiroABE <yasu@yasundial.org>
# @see: MenuStrip Class Example from MSDN API Reference
#
import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
import System
from System.Windows.Forms import Form
from System.Windows.Forms import DockStyle
from System.Windows.Forms import MenuStrip
from System.Windows.Forms import MessageBox
from System.Windows.Forms import ToolStripMenuItem
from System.Drawing import Size
## setup form object
form = Form()
form.Text = "Hello World!"
form.Size = Size(300,200)
form.IsMdiContainer = True
## setup windowMenu object
windowMenu = ToolStripMenuItem("Window")
## setup windowNewMenu
windowNewMenu = ToolStripMenuItem("New", None)
def windowNewMenu_onclick(sender, arge):
MessageBox.Show("Thank you for clicking on me!", "windowNewMenu_onclick")
pass
windowNewMenu.Click += windowNewMenu_onclick
windowMenu.DropDownItems.Add(windowNewMenu)
## setup windowMenu object
ms = MenuStrip()
ms.MdiWindowListItem = windowMenu
ms.Items.Add(windowMenu)
ms.Dock = DockStyle.Top
## formオブジェクトへのms変数の追加は最後にします
form.MainMenuStrip = ms
form.Controls.Add(ms)
System.Windows.Forms.Application.Run(form)
## end ##
ここでは"Window"->"New"メニューを追加して、"New"メニューにイベントハンドラをセットしています。 form.IsMdiContaineはサンプルから引き継いだ記述で、コメントアウトしても動くのですが効果について理解していないのでそのままにしてあります。
サンプルからToolStripについての記述は削除してしまいましたが、基本的にはサンプルを引き継ぐ事で可能だと思います。>
普通に日本語を含めると、次のようなエラーメッセージが表示されます。
File "02_menustrip.ipy", line SyntaxError: Non-ASCII character '\x83' in file 02_menustrip.ipy on line 40, but no encoding declared; see http://www.python.org/peps/pep-0263.ht ml for details
先頭に# coding=Shift_JISを入れることで回避できます。
Created: 2010-03-11, Last modified: 2010-03-19
www.yasundial.org by
Yasuhiro ABE
is licensed under a Creative Commons Attribution 2.1 Japan License.
Permissions beyond the scope of this license may be available at http://www.yasundial.org/info/license.html.