有没有精同多个子窗体情况下的快捷键问题的达人?

kevinless1109 2009-02-13 01:20:33
本人在一个父窗体中打开了子窗体form1和子窗体form2,form1中有个按钮(【导出】并设置了快捷键s),form2中有个按钮(【删除】也设置了快捷键s),当前焦点在form2上使用alt+s为什么会响应form1上的【导出】按钮,而form2中的【删除】按钮确没有反应,求精通人士解答。
...全文
112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevinless1109 2009-02-13
  • 打赏
  • 举报
回复
确实有点奇怪,我发现一个父窗体下打开多个字窗体情况下,快捷键响应的是第一个打开的子窗体按钮而不是当前焦点窗体的按钮。还是有这种情况。楼上wzuomin 所说的是两个独立的窗体,而不是同一个父窗体下的子窗体。
wzuomin 2009-02-13
  • 打赏
  • 举报
回复
我用以下代码简单测试了一下,没有发现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 Sub

End Class

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

End Class

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

End Class
EveryCase 2009-02-13
  • 打赏
  • 举报
回复
顶····
wzuomin 2009-02-13
  • 打赏
  • 举报
回复
注意这两处:
1、Public Class FormA
Inherits System.Windows.Forms.UserControl


2、Public Class FormB
Inherits System.Windows.Forms.UserControl



wzuomin 2009-02-13
  • 打赏
  • 举报
回复

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 Class

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

End Class

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

End Class

kevinless1109 2009-02-13
  • 打赏
  • 举报
回复
刚才发现,这个问题好像是panel中的子窗体焦点问题,就是panel开了多个子窗体,焦点一直在第一个开的子窗体上,导致一直响应第一个窗体。如何设置panel子窗体的焦点,请教达人。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧