我有一個具有 02 ComboBox 的 VB Windows 表單應用程式,它為重命名檔案事件提供新名稱輸入。第一個組合框為新名稱組成專案提供前綴(aa,bb,cc,...可以通過keydown按鈕單擊事件添加更多),另一個組合框提供主名稱包含專案(XX,YY,ZZ,...也可以添加更多通過keydown按鈕點擊事件)。當我從第一個組合框中選擇“aa”,從另一個選擇“XX”然后觸發重命名事件,新檔案名應該是“aa - XX”,如果檔案“aa - XX”已經存在,則添加“1”最后一個為“aa - XX 1”等等,如果在前綴組合框中沒有選擇任何專案,則新名稱只是“XX”并遞增。我通過系統 openfiledialog 獲取舊檔案名。我的重命名代碼如下:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim var As String, prfix As String
var = ComboBox1.Text
prfix = ComboBox2.Text
If ComboBox2.Text = Nothing Then
If File.Exists(n & "\" & var & extn) = False Then
My.Computer.FileSystem.RenameFile(OpenFD.FileName, var & extn)
Else
Dim i As Integer = 1
Dim newfn As String = var & " " & i & extn
Dim m As String = n & "\" & newfn
While File.Exists(m)
newfn = var & " " & i & extn
m = n & "\" & newfn
i = 1
End While
My.Computer.FileSystem.RenameFile(OpenFD.FileName, newfn)
End If
Else
If File.Exists(n & "\" & prfix & " - " & var & extn) = False Then
My.Computer.FileSystem.RenameFile(OpenFD.FileName, prfix & " - " & var & extn)
Else
Dim j As Integer = 1
Dim newfn1 As String = prfix & " - " & var & " " & j & extn
Dim k As String = n & "\" & newfn1
While File.Exists(k)
newfn1 = var & " " & j & extn
k = n & "\" & newfn1
j = 1
End While
My.Computer.FileSystem.RenameFile(OpenFD.FileName, newfn1)
End If
End If
MessageBox.Show("Select a next file")
End Sub
我的代碼運行良好 2 次。在我選擇“aa”和“XX”并將其重命名后,第一個結果是“aa - XX”,第二個結果是“aa - XX 1”但第三個結果是“XX”,第四個結果是“XX 1 " 然后遞增,結果應該是 "aa - XX 2" 和下一個遞增。我不明白為什么在沒有重新選擇兩個組合框中的專案(2 次)之后,組合框 1 仍然有效,但組合框 2 沒有。我對 VB 很陌生,因此非常感謝任何建議。謝謝。
uj5u.com熱心網友回復:
在您的下部Else塊中,您錯誤地構建了檔案名。
您使用以下命令構建第一個“newfn1”:
Dim newfn1 As String = prfix & " - " & var & " " & j & extn
但是在下面,您使用了:
newfn1 = var & " " & j & extn
請注意開頭缺少的前綴和破折號部分。
這是完整的更正版本:
Dim j As Integer = 1
Dim newfn1 As String = prfix & " - " & var & " " & j & extn
Dim k As String = Path.Combine(n, newfn1)
While File.Exists(k)
j = j 1
newfn1 = prfix & " - " & var & " " & j & extn
k = Path.Combine(n, newfn1)
End While
My.Computer.FileSystem.RenameFile(OpenFD.FileName, newfn1)
uj5u.com熱心網友回復:
我對你的解釋有點困惑,但如果我理解正確,這應該會有所幫助,
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
CreateFile()
End Sub
Private BasePath As String = "" 'TODO
Private Ext As String = "txt"
Private Sub CreateFile()
If ComboBox1.SelectedIndex < 0 OrElse
ComboBox2.SelectedIndex < 0 OrElse
ComboBox1.SelectedItem.ToString = "" OrElse
ComboBox2.SelectedItem.ToString = "" Then
'error message
Exit Sub
End If
Dim fileName As String = String.Format("{0}-{1}.{2}",
ComboBox1.SelectedItem.ToString,
ComboBox2.SelectedItem.ToString,
Ext)
fileName = IO.Path.Combine(BasePath, fileName)
Dim ct As Integer = 1
Do While IO.File.Exists(fileName)
fileName = String.Format("{0}-{1}{3}.{2}",
ComboBox1.SelectedItem.ToString,
ComboBox2.SelectedItem.ToString,
Ext,
ct)
fileName = IO.Path.Combine(BasePath, fileName)
ct = 1
Loop
Dim fs As IO.FileStream = IO.File.Create(fileName)
fs.Close()
fs.Dispose()
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/440298.html
標籤:VB.net if 语句 while循环 组合框 改名
