有没有精同多个子窗体情况下的快捷键问题的达人?
本人在一个父窗体中打开了子窗体form1和子窗体form2,form1中有个按钮(【导出】并设置了快捷键s),form2中有个按钮(【删除】也设置了快捷键s),当前焦点在form2上使用alt+s为什么会响应form1上的【导出】按钮,而form2中的【删除】按钮确没有反应,求精通人士解答。
[解决办法]
我用以下代码简单测试了一下,没有发现lz所说的那个问题啊。
- VB.NET code
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frmA As New FormA frmA.Show() Dim frmB As New FormB frmB.Show() End SubEnd ClassPublic Class FormA Inherits System.Windows.Forms.Form Public Sub New() Dim btn As New Button btn.Text = "Button(&S)" AddHandler btn.Click, AddressOf ButtonClick Me.Controls.Add(btn) Me.Text = "FormA" End Sub Private Sub ButtonClick(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox("FormA") End SubEnd ClassPublic Class FormB Inherits System.Windows.Forms.Form Public Sub New() Dim btn As New Button btn.Text = "Button(&S)" AddHandler btn.Click, AddressOf ButtonClick Me.Controls.Add(btn) Me.Text = "FormB" End Sub Private Sub ButtonClick(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox("FormB") End SubEnd Class
[解决办法]
- VB.NET code
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim frmA As New FormA Dim frmB As New FormB Dim panel1 As New Panel panel1.Dock = DockStyle.Fill panel1.Controls.Add(frmA) panel1.Controls.Add(frmB) frmA.Location = New Point(10, 10) frmB.Location = New Point(10, frmA.Location.Y + frmA.Height + 10) Me.Controls.Add(panel1) End SubEnd ClassPublic Class FormA Inherits System.Windows.Forms.UserControl Public Sub New() Me.BorderStyle = Windows.Forms.BorderStyle.FixedSingle Dim btn As New Button btn.Text = "ButtonA(&S)" AddHandler btn.Click, AddressOf ButtonClick Me.Controls.Add(btn) Me.Text = "FormA" End Sub Private Sub ButtonClick(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox("FormA") End SubEnd ClassPublic Class FormB Inherits System.Windows.Forms.UserControl Public Sub New() Me.BorderStyle = Windows.Forms.BorderStyle.FixedSingle Dim btn As New Button btn.Text = "ButtonB(&S)" AddHandler btn.Click, AddressOf ButtonClick Me.Controls.Add(btn) Me.Text = "FormB" End Sub Private Sub ButtonClick(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox("FormB") End SubEnd Class
[解决办法]
注意这两处:
1、Public Class FormA
Inherits System.Windows.Forms.UserControl
2、Public Class FormB
Inherits System.Windows.Forms.UserControl