我有一个名为OpenFileDialog的表格
我希望在文件窗格中提前聚焦某个文件(突出显示)
有可能吗?
我有代码,我可以选择所有文件,现在我想要选择1个文件。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim OpenFileDialog1 As New OpenFileDialog
OpenFileDialog1.Filter = "All files (*.*)|*.*"
OpenFileDialog1.RestoreDirectory = True
OpenFileDialog1.FileName = "C:\MyFile.wmv"
OpenFileDialog1.InitialDirectory = My.Settings.VideoDirectory
OpenFileDialog1.Multiselect = True
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
My.Settings.VideoDirectory = Path.GetDirectoryName(OpenFileDialog1.FileName)
End If
End Sub
Dim m_lastDialogHandle As IntPtr
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
Public Declare Function FindWindowExW Lib "user32.dll" (ByVal hWndParent As IntPtr, ByVal hWndChildAfter As IntPtr, <MarshalAs(UnmanagedType.LPWStr)> ByVal lpszClass As String, <MarshalAs(UnmanagedType.LPWStr)> ByVal lpszWindow As String) As IntPtr
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = 289 Then ' Notify of message loop
Dim dialogHandle As IntPtr = m.LParam
If (dialogHandle <> m_lastDialogHandle) Then
Dim hChild1 As IntPtr = 0
Dim hChild2 As IntPtr = 0
Dim hChild3 As IntPtr = 0
m_lastDialogHandle = dialogHandle
hChild1 = FindWindowExW(dialogHandle, 0, "DUIViewWndClassName", Nothing)
If hChild1 = 0 Then Exit Sub
hChild1 = FindWindowExW(hChild1, 0, "DirectUIHWND", Nothing)
If hChild1 = 0 Then Exit Sub
Do
hChild2 = FindWindowExW(hChild1, hChild2, Nothing, Nothing)
If hChild2 = 0 Then Exit Sub
hChild3 = FindWindowExW(hChild2, 0, "SHELLDLL_DefView", "ShellView")
Loop Until hChild3 <> 0
SendMessage(hChild3, &H111, &H17021, 0)
End If
End If
End Sub
End Class
我确定可以选择1个文件,我只需知道好的WM_COMMAND。
任何帮助将不胜感激。
答案 0 :(得分:0)
在调用FileName
之前设置对话框的DefaultExt
和ShowDialog
属性,以便在“视频”文件夹中预先选择MyFile。这将打开具有无扩展名或wmv的该名称的文件。任何其他扩展都应该失败。
Dim OpenFileDialog1 As New OpenFileDialog
OpenFileDialog1.Filter = "All files (*.*)|*.*"
OpenFileDialog1.RestoreDirectory = True
OpenFileDialog1.FileName = "MyFile"
OpenFileDialog1.DefaultExt = "wmv"
OpenFileDialog1.InitialDirectory = My.Settings.VideoDirectory
OpenFileDialog1.Multiselect = True
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
My.Settings.VideoDirectory = Path.GetDirectoryName(OpenFileDialog1.FileName)
End If
答案 1 :(得分:0)
我发现自己是IShellBrowser,IShellView和IShellFolder实现的解决方案。这个问题现在可以结束了。