
大家好!我一直在尋找解決方案,但我在畫一個空白?我正在使用 Win Forms、VS 2019、Win10、VB.NET。
我需要的
- 我正在使用檔案夾中的檔案名填充組合框;2. 單擊 Combo 中的專案使用 OpenFileDialog 選擇一個檔案,該檔案使用與 Combo 中選定專案對應的文本檔案中的行填充 ListBox。這一切都有效!
我想要做的是:當用戶單擊組合框中的專案時,我希望打開檔案對話框打開已選擇的檔案,該檔案對應于在組合框中單擊的專案。
我正在使用的代碼
我在組合框的 SelectedIndexChanged 事件中使用以下代碼來使用打開檔案對話框打開默認檔案夾,用戶可以在其中選擇一個檔案來填充串列框:
Dim openfile = New OpenFileDialog() With {.Filter = "Text (*.Text)|*.txt"}
With openfile
.InitialDirectory = "C:\Users\" "username" "\Documents\WIN32 VIEWER"
End With
If (openfile.ShowDialog() = System.Windows.Forms.DialogResult.OK) Then
For Each line As String In File.ReadAllLines(openfile.FileName)
ListBox1.Items.Add(line)
Next
End If
我試過的
我已成功在另一個程式中使用以下代碼在打開檔案對話框中選擇相應的檔案。但是,我不確定如何將此代碼改編為上面的“我正在使用的代碼”示例?我試過了,但找不到將“/select”命令應用于我的示例代碼的方法?也許有不同的方法可以做到這一點?如果有人可以舉個例子或指出如何實作這一目標的例子,我將不勝感激!
Dim sFileName As String = ofd.FileName (Original code uses: "C:\Images\Test.png")
Process.Start("explorer.exe", "/select," & sFileName)
uj5u.com熱心網友回復:
幾點建議:
- 您可以構建一個使用 File(完整路徑)初始化的類(此處為命名
DisplayFile),然后公開在您的背景關系中有用的屬性和方法:- 回傳
Title檔案的 a(此處為不帶擴展名的檔案名) - 檔案名和路徑
GetLines()以字串陣列形式回傳檔案內容的公共方法 ( )- 覆寫
ToString()以回傳Title屬性值
- 回傳
Friend NotInheritable Class DisplayFile
Public Sub New(pathOfFile As String)
FilePath = pathOfFile
FileName = Path.GetFileName(pathOfFile)
Title = Path.GetFileNameWithoutExtension(pathOfFile)
End Sub
Public ReadOnly Property FileName As String
Public ReadOnly Property FilePath As String
Public ReadOnly Property Title As String
Public Function GetLines() As String()
Return File.ReadAllLines(FilePath)
End Function
Public Overrides Function ToString() As String
Return Title
End Function
End Class
在您的表單中,從 初始化此類物件的串列Directory.Getfiles()。
使用此集合,初始化 ComboBox 的 DataSource。由于DisplayMember沒有設定,所以每個Item顯示的結果是[object].ToString():在這種情況下,[DisplayFile].ToString()回傳Title屬性值(表示不帶擴展名的檔案名)
Imports System.IO
Public Class SomeForm
Private displayFiles As List(Of DisplayFile) = Nothing
Public Sub New()
InitializeComponent()
Dim filesPath = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.MyDocuments), "WIN32 VIEWER")
displayFiles = Directory.GetFiles(filesPath, "*.txt").Select(Function(f) New DisplayFile(f)).ToList()
cboFilesList.DataSource = displayFiles
cboFilesList.SelectedIndex = -1
End Sub
End Class
由于 ComboBox 的每個 Item 都是一個DisplayFile物件,因此您[ComboBox]SelectedItem可以轉換DisplayFile并呼叫它的GetLines()方法來用 File 的內容填充 ListBox 控制元件:
訂閱SelectionChangeCommitted您的 ComboBox 的事件
' [...]
Private Sub someComboBox_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles someComboBox.SelectionChangeCommitted
someListBox.Items.Clear()
someListBox.Items.AddRange(CType(someComboBox.SelectedItem, DisplayFile).GetLines())
End Sub
' [...]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/528324.html
