主婦と.NETと犬のぶろぐ

奥様 と プログラム と お犬様 の 楽しい日常

目次

Blog 利用状況

ニュース

書庫

日記カテゴリ

MenuStrip(System.Windows.Forms.MenuStrip)

ちょっと間があいてしまいましたが...
MenuStrip って ContextMenuStrip と似てるというか、ほとんど同じ。
おもしろいのが MdiWindowListItem プロパティですかね。
自分で何も実装しなくても、開いている子画面のメニューが勝手にぽこぽこできる。

あと、全然用途がなさそうですが NumericUpDown メニューを作ってみました。
ToolStripControlHost を継承すればサルでも出来てしまうじゃないかと思うくらい簡単。

■参考文献
MenuStrip コントロール (Windows フォーム)
MenuStrip クラス
ToolStripControlHost クラス

■実行画像
MdiWindowListItem に設定したメニュー
MenuStrip MdiWindowListItem

Public Class MenuStripTest

Private Sub MenuStripTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 自身を MDI の親に設定 Me.IsMdiContainer = True ' MenuStrip を追加 Dim mm As MenuStrip = New MenuStrip() Me.Controls.Add(mm) Me.MainMenuStrip = mm
Dim mdiWindowListItem As ToolStripMenuItem = New ToolStripMenuItem("MdiWindow") Dim childShowItem As ToolStripMenuItem = New ToolStripMenuItem("&Open") mdiWindowListItem.DropDownItems.Add(childShowItem) AddHandler childShowItem.Click, AddressOf ShowChildForm
Dim testItem As ToolStripMenuItem = New ToolStripMenuItem("test") ' ショートカットキーを使う testItem.Text = "Test Ctrl+T" testItem.ShortcutKeys = System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.T 'CType(, System.Windows.Forms.Keys) ' ToolTipText を設定する testItem.ToolTipText = "Open と同じです" AddHandler testItem.Click, AddressOf ShowChildForm
With mm .Dock = DockStyle.Top ' Grip を可視にする .GripStyle = ToolStripGripStyle.Visible ' MDI の子フォームのリストを表示するために使用される ToolStripMenuItem .MdiWindowListItem = mdiWindowListItem .Items.Add(mdiWindowListItem) ' 別に MdiWindowListItem にセットしなくとも普通に子画面は開ける ' 開いている Form の一覧が MdiWindowListItem に表示される .Items.Add(testItem) ' Item に ToolTipText を設定しても、ShowItemToolTips = True じゃないと表示されない .ShowItemToolTips = True
' プログレスバーを表示してみる Dim progressBar As ToolStripProgressBar = New ToolStripProgressBar() progressBar.Minimum = 0 progressBar.Maximum = 100 progressBar.Value = 50 .MdiWindowListItem.DropDownItems.Add(progressBar) DirectCast(.MdiWindowListItem.DropDown, ToolStripDropDownMenu).ShowCheckMargin = False End With
'' 独自のアイテムを追加する Dim originMenu As ToolStripMenuItem = New ToolStripMenuItem() originMenu.Text = "Original" mm.Items.Add(originMenu) Dim numericItem As NumericUpDownItem = New NumericUpDownItem() originMenu.DropDownItems.Add(numericItem) End Sub
Private Sub ShowChildForm(ByVal sender As Object, ByVal e As EventArgs) Dim children As Form = New Form() children.Text = DateTime.Now.ToString("yyyyMMddHHmmss") children.MdiParent = Me children.Size = New Size(100, 100) children.Show() End Sub End Class
' 独自のメニュー項目を作成する ' http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.toolstripcontrolhost(VS.80).aspx Public Class NumericUpDownItem Inherits ToolStripControlHost
Public Sub New() MyBase.New(New NumericUpDown()) End Sub
Public ReadOnly Property NumericUpDown() As NumericUpDown Get Return DirectCast(MyBase.Control, NumericUpDown) End Get End Property
Public Event ValueChanged As EventHandler
Protected Overrides Sub OnSubscribeControlEvents(ByVal c As Control) MyBase.OnSubscribeControlEvents(c) Dim numericUpDownctrl As NumericUpDown = DirectCast(c, NumericUpDown)
' NumericUpDown を生で公開してるから別にやらんでもいいようなきもしますが... AddHandler numericUpDownctrl.ValueChanged, _ AddressOf OnValueChanged End Sub
Protected Overrides Sub OnUnsubscribeControlEvents(ByVal c As Control) MyBase.OnUnsubscribeControlEvents(c) Dim numericUpDownctrl As NumericUpDown = DirectCast(c, NumericUpDown)
RemoveHandler numericUpDownctrl.ValueChanged, _ AddressOf OnValueChanged End Sub
Private Sub OnValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) RaiseEvent ValueChanged(Me, e) End Sub End Class

投稿日時 : 2007年2月22日 10:09

Feedback

# lypPYfowQrBllSJOlb 2012/01/07 12:57 http://www.luckyvitamin.com/m-599-solaray

Yeah, it is clear now !... From the very beginning I did not understand where was the connection with the title !!...

タイトル  
名前  
Url
コメント