2016-10-16 1 views
0

У меня есть ListBox, содержащий полный путь и ToolStripMenu, чтобы выбрать «Открыть файл» или «Показать файл в папке».Щелкните правой кнопкой мыши на ListBox, чтобы открыть ToolStripMenu, но не выбирает какой-либо элемент.

Вопрос: Мне нужно левое Нажмите на ListBoxItem перед Щелкните правой кнопкой мыши, чтобы выбрать файл, который мне нужно показать в папке.
Если я этого не делаю, я получаю NullReferenceException, потому что ничего не выбрано.

Как я могу выбрать элемент Щелкните правой кнопкой мыши?

Вот мой код:

Private Sub ShowInFolderToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ShowInFolderToolStripMenuItem.Click 
    Try 
     If DirectCast(DirectCast(sender, ToolStripMenuItem).GetCurrentParent, _ 
      ContextMenuStrip).SourceControl.GetType Is GetType(ListBox) Then 

      Shell("explorer /select, " & DirectCast(DirectCast(DirectCast(sender, _ 
        ToolStripMenuItem).GetCurrentParent, ContextMenuStrip).SourceControl, _ 
        ListBox).SelectedItem.ToString, AppWinStyle.NormalFocus) 
     End If 
    Catch ex As Exception 
     MsgBox(ex.ToString) 
    End Try 
End Sub 

Еще один вопрос ... Почему приведенный ниже код не работает, но не дает ошибку и показать мне папку документа?

Process.Start("explorer.exe", "/select" & DirectCast(DirectCast(DirectCast(sender, _ 
    ToolStripMenuItem).GetCurrentParent, ContextMenuStrip).SourceControl, _ 
    ListBox).SelectedItem.ToString) 
+0

Вы можете проверить, есть ли выбранный элемент в начале – Plutonix

+0

@Plutonix Да, я знаю это. Но можно было выбрать 1-й элемент и щелкнуть правой кнопкой мыши на 3-м элементе, и поэтому может отображаться неверный файл. – genespos

+0

@Plutonix Я решил, но я все еще открыт для лучших решений;) – genespos

ответ

0

решена добавлением MouseDown событие:

Private Sub ListBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseDown 
    Try 
     DirectCast(sender, ListBox).SelectedIndex = DirectCast(sender, ListBox).IndexFromPoint(e.X, e.Y) 
    Catch ex As Exception 
    End Try 
End Sub