此代码太长。如何缩短时间?每3个中的3个,它将显示在末尾。 TxtDrawRemize.Text & = TxtResultStr1.Text + "" + TxtResultStr2.Text + "" + TxtResultStr3.Text & Environment.NewLine
我想简短地说明一下,我被困在代码中,因为它太长了,有时我会弄错变量。如果您能帮助我,我将不胜感激。
Private Sub ScanareLinia1()
On Error Resume Next
Dim textsrtring As String = TxtStringNum1.Text
Dim words As String() = textsrtring.Split(" "c)
' Split string based on space
Dim found As Boolean = False
' Use For Each loop over words
Dim word As Integer
For Each word In words
For i As Integer = 0 To TxtIntDraws.Lines.Count - 1
If TxtIntDraws.Lines(1).Contains(word) Then
If Array.IndexOf(TxtIntDraws.Lines(1).Split(","c), CStr(word)) > -1 Then
TxtResultStr1.Text = word
End If
End If
Next
Next
End Sub
Private Sub ScanareLinia2()
On Error Resume Next
Dim textsrtring As String = TxtStringNum2.Text
Dim words As String() = textsrtring.Split(New Char() {" "c})
' Split string based on space
Dim found As Boolean = False
' Use For Each loop over words
Dim word As Integer
For Each word In words
For i As Integer = 0 To TxtIntDraws.Lines.Count - 1
If TxtIntDraws.Lines(1).Contains(word) Then
If Array.IndexOf(TxtIntDraws.Lines(1).Split(","c), CStr(word)) > -1 Then
TxtResultStr2.Text = word
End If
End If
Next
Next
End Sub
Private Sub ScanareLinia3()
On Error Resume Next
Dim textsrtring As String = TxtStringNum3.Text
Dim words As String() = textsrtring.Split(New Char() {" "c})
' Split string based on space
Dim found As Boolean = False
' Use For Each loop over words
Dim word As Integer
For Each word In words
For i As Integer = 0 To TxtIntDraws.Lines.Count - 1
If TxtIntDraws.Lines(1).Contains(word) Then
If Array.IndexOf(TxtIntDraws.Lines(1).Split(","c), CStr(word)) > -1 Then
TxtResultStr3.Text = word
End If
End If
Next
Next
TxtDrawRemize.Text &= TxtResultStr1.Text + " " + TxtResultStr2.Text + " " + TxtResultStr3.Text & Environment.NewLine
End Sub
Private Sub ScanareLinia4()
On Error Resume Next
Dim textsrtring As String = TxtStringNum1.Text
Dim words As String() = textsrtring.Split(New Char() {" "c})
' Split string based on space
Dim found As Boolean = False
' Use For Each loop over words
Dim word As Integer
For Each word In words
For i As Integer = 0 To TxtIntDraws.Lines.Count - 1
If Array.IndexOf(TxtIntDraws.Lines(2).Split(","c), CStr(word)) > -1 Then
TxtResultStr1.Text = word
End If
Next
Next
End Sub
Private Sub ScanareLinia5()
On Error Resume Next
Dim textsrtring As String = TxtStringNum2.Text
Dim words As String() = textsrtring.Split(New Char() {" "c})
' Split string based on space
Dim found As Boolean = False
' Use For Each loop over words
Dim word As Integer
For Each word In words
For i As Integer = 0 To TxtIntDraws.Lines.Count - 1
If Array.IndexOf(TxtIntDraws.Lines(2).Split(","c), CStr(word)) > -1 Then
TxtResultStr2.Text = word
End If
Next
Next
End Sub
Private Sub ScanareLinia6()
On Error Resume Next
Dim textsrtring As String = TxtStringNum3.Text
Dim words As String() = textsrtring.Split(New Char() {" "c})
' Split string based on space
Dim found As Boolean = False
' Use For Each loop over words
Dim word As Integer
For Each word In words
For i As Integer = 0 To TxtIntDraws.Lines.Count - 1
If Array.IndexOf(TxtIntDraws.Lines(2).Split(","c), CStr(word)) > -1 Then
TxtResultStr3.Text = word
End If
Next
Next
TxtDrawRemize.Text &= TxtResultStr1.Text + " " + TxtResultStr2.Text + " " + TxtResultStr3.Text & Environment.NewLine
End Sub
答案 0 :(得分:0)
由于这些函数的功能几乎相同,因此建议您将所有static
函数和参数移至所有参数,并将所有static
函数/变量名称移至切换用例块或列表。
例如您可以用一个名为ScanareLinia
的函数替换接受扫描行的函数。像这样:ScanareLinia2(lineToScan As Integer)
。
根据{{1}}变量,可以选择要使用的lineToScan
。您可以使用select-case statement。
答案 1 :(得分:0)
尝试一下...传递1-6:
Private Sub ScanareLinia(ByVal number As Integer)
Dim mappedNumber As Integer = If(number Mod 3 = 0, 3, number Mod 3)
Dim tbString As Control = Me.Controls.Find("TxtStringNum" & mappedNumber, True).FirstOrDefault
Dim tbResults As Control = Me.Controls.Find("TxtResultStr" & mappedNumber, True).FirstOrDefault
If Not IsNothing(tbString) AndAlso Not IsNothing(tbResults) Then
Dim textsrtring As String = tbString.Text
Dim words As String() = textsrtring.Split(New Char() {" "c}) ' Split string based on space
For Each word As Integer In words ' Use For Each loop over words
For i As Integer = 0 To txtIntDraws.Lines.Count - 1
Select Case number
Case 1 To 3
If TxtIntDraws.Lines(1).Contains(word) Then
If Array.IndexOf(TxtIntDraws.Lines(1).Split(","c), CStr(word)) > -1 Then
tbResults.Text = word
End If
End If
Case 4 To 6
If Array.IndexOf(TxtIntDraws.Lines(2).Split(","c), CStr(word)) > -1 Then
tbResults.Text = word
End If
Case Else
MessageBox.Show("Now what?!")
End Select
Next
Next
If mappedNumber = 3 Then
TxtDrawRemize.Text &= TxtResultStr1.Text + " " + TxtResultStr2.Text + " " + TxtResultStr3.Text & Environment.NewLine
End If
End If
End Sub