防止ListView将旧表单放到前面

时间:2017-04-22 05:18:26

标签: vb.net winforms listview focus

我有一个包含Form A控件的表单(我们称之为ListView)。当我在ListView中选择一个项目时,事件处理程序会创建并显示Form B

我希望Form B出现在Form A前面。显示时,两种形式都最大化。问题是,ListView中的Form A使Form A在显示Form B后立即重点关注。屏幕暂时闪烁,因此Form B最初位于前方。我知道这是ListView这样做的,因为如果我从另一个控件中打开Form B,它就会按预期工作。

我正在使用Form B显示Show()。将其更改为ShowDialog()可以解决问题,但我不希望它是模态的。

这在ListView1.ItemSelectionChanged事件的处理程序中发生,并且更改为ListView1.SelectedIndexChanged无效。

一些代码,如果它更清楚:

Private Sub ListView1_ItemSelectionChanged(sender As Object, e As ListViewItemSelectionChangedEventArgs) Handles ListView1.ItemSelectionChanged
    If e.IsSelected Then
        Dim my_form As New MyForm
        my_form.Show()
    End If
End Sub

1 个答案:

答案 0 :(得分:2)

将ListViews Activation属性设置为“OneClick”,然后处理ItemActivate事件并从那里显示您的表单。