有没有更好的方法来为繁忙的表单上的许多控件提供keydown处理程序? (在某些情况下,单独使用表单处理程序不起作用.) Private Sub rText_KeyDown(ByVal Sender As Object, ByVal e As KeyEventArgs) Handles
Private Sub rText_KeyDown(ByVal Sender As Object, ByVal e As KeyEventArgs) Handles rText0.KeyDown, txTaxon.KeyDown, txCommon.KeyDown, _ txConfidence.KeyDown, txDate.KeyDown, txDateAdded.KeyDown, txFileName.KeyDown, txGPS.KeyDown, txRating.KeyDown, _ txConfidence.KeyDown, txQuality.KeyDown, txRemarks.KeyDown, txKeyWords.KeyDown, txOriginalPath.KeyDown, txDateAdded.KeyDown, _ txLink.KeyDown, chkLink.KeyDown, rview.KeyDown, cmdNext.KeyDown, tvTaxon.KeyDown, Me.KeyDown, _ cmdTaxon.KeyDown Call globalkey(e) End Sub我是一名C#程序员,因此无法提供有效的解决方案(如在vb.net代码中).
我认为你可以通过做以下事情来实现这一目标.
>为您的相应控件编写一个AddHandlers的方法,当且仅当它们具有设置为属性的特定值时(下面的步骤#2中的详细信息)
>要将公共处理程序附加到的所有控件将其Tag属性设置为唯一值,例如:“KeyDown”.我建议在这种情况下使用Enum,而不是字符串
>现在,在Form构造函数中,在InitializeComponent调用之后,调用您在上面#1中编写的方法.这将把处理程序附加到所有所需的控件.
>如果您有多个具有此要求的表单,则可以将此功能添加到主表单,该表单的作用类似于所有其他表单的父表单(继承)
希望我足够清楚,这有帮助.