【发布时间】:2017-09-26 13:16:39
【问题描述】:
我正在使用 VB.NET 和 Visual Studio 2005 重新构建在 VB6 中构建的旧应用程序。
它有一个包含 50-60 个文本框的大表单,每个文本框有 2-3 个事件处理程序、单击、验证、keydown、输入等...
构建这个应用程序的人没有注意保持良好的结构,所以现在表单的代码文件几乎是 2900 行代码。
它有 3-4 个重要功能,其他功能只是事件处理程序。
问题是,这些事件处理程序中的每一个都被定义为私有的,并且引用仅存在于表单代码文件中的对象/文本框。
将这些事件处理程序移动到单独的文件中的正确方法是什么?
这是一个示例代码,由于我是新手 VB.NET 程序员,我未能将其移至单独的文件:
Imports System.Windows.Forms
Public Class Pol
Private cboPol As MaskedTextBox = New MaskedTextBox()
Private Sub cboPol_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) 'Handles cboPol.Enter
' TODO ova beshe zakomentirano. Da se proveri
'meGodrag.SelStart = 0
' meGodrag.SelLength = 4
'grstar = meGodrag.Text
End Sub
Private Sub cboPol_KeyDown(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyEventArgs) 'Handles cboPol.KeyDown
Dim KeyCode As Short = eventArgs.KeyCode
Dim Shift As Short = eventArgs.KeyData \ &H10000
If KeyCode = Constants.LEFT_ARROW_KEY Then
'meNasmes.Focus()
End If
End Sub
Private Sub cboPol_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) 'Handles cboPol.KeyPress
Dim KeyAscii As Short = Asc(eventArgs.KeyChar)
'If KeyAscii = Constants.ENTER_KEY Then
System.Windows.Forms.SendKeys.Send(Constants.TAB_KEY)
'End If
eventArgs.KeyChar = Chr(KeyAscii)
If KeyAscii = 0 Then
eventArgs.Handled = True
End If
End Sub
End Class
【问题讨论】:
-
这到底和c#有什么关系??
-
@BugFinder 删除了它:D
-
如果您只想将代码移动到不同的文件,那么您可以跨多个文件定义部分类:docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/…
标签: vb.net vb6 visual-studio-2005 upgrade