本人在一个父窗体中打开了子窗体form1和子窗体form2,form1中有个按钮(【导出】并设置了快捷键s),form2中有个按钮(【删除】也设置了快捷键s),当前焦点在form2上使用alt+s为什么会响应form1上的【导出】按钮,而form2中的【删除】按钮确没有反应,求精通人士解答。

解决方案 »

  1.   

    我用以下代码简单测试了一下,没有发现lz所说的那个问题啊。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
      

  2.   

    确实有点奇怪,我发现一个父窗体下打开多个字窗体情况下,快捷键响应的是第一个打开的子窗体按钮而不是当前焦点窗体的按钮。还是有这种情况。楼上wzuomin 所说的是两个独立的窗体,而不是同一个父窗体下的子窗体。
      

  3.   

    刚才发现,这个问题好像是panel中的子窗体焦点问题,就是panel开了多个子窗体,焦点一直在第一个开的子窗体上,导致一直响应第一个窗体。如何设置panel子窗体的焦点,请教达人。
      

  4.   


    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 Sub
    End 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
      

  5.   

    注意这两处:
    1、Public Class FormA
        Inherits System.Windows.Forms.UserControl
    2、Public Class FormB
        Inherits System.Windows.Forms.UserControl