- 題名: メインフォームのMenuStripで定義したショートカット
- 日時: 2014/11/04 17:01:09
- ID: 32691
- この記事の返信元:
- (なし)
- この記事への返信:
- [32692] Re[1]: メインフォームのMenuStripで定義したショートカット2014/11/05 12:42:55
- ツリーを表示
■No32691に返信(納豆さんの記事)
VB.NET ソースですがこんなでどうでしょう?
インスタンス化の部分は既定のインスタンスを使っているので注意してください。
Form1:
テストToolStripMenuItemにショートカット割り当てています
Private Sub テストToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles テストToolStripMenuItem.Click
Label1.Text = Date.Now.ToString("yyyy/MM/dd HH:mm:ss")
End Sub
Public Function PubProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean
Dim newmsg = New Message()
newmsg.HWnd = Me.Handle
newmsg.LParam = msg.LParam
newmsg.WParam = msg.WParam
Return MyBase.ProcessCmdKey(newmsg, keyData)
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Form2.Show()
End Sub
Form2:
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean
Dim ret = Form1.PubProcessCmdKey(msg, keyData)
If ret Then
Return True
Else
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function
分類:[.NET]
こんにちわ。
メインフォーム(アクティブではない)のメニューで登録したショートカット(Ctrl+Cなど)を、
生成した子ウィンドウ(MDIではない)でも有効にしたいのですが、
方法がよくわかりません。
ProcessCmdKey を使って色々やってみましたが、辿りつけていません。
メインメニューのみを持ったフォーム(MainForm)があるとして、
そのフォームから生成された別フォーム(SubForm)がアクティブという状態です。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39063&forum=7
この質問と回答が、比較的お手本に近いのかな?と思ってはおりますが、
勘違いなのかうまくいっていません。
よろしくおねがいします。