简体   繁体   中英

Set focus on ListView

I've just starting using ListView control in VS2019.

I'm sure there's a simple solution, but I can't figure out how to set the focus on the control like I can with most other controls.

I want the ListView to be focused when the form loads, and then I want to programmatically focus an item in the ListView.

I know how to focus a particular item using ListView1.FocusedItem.Index , but I can't focus the actual control.

I have tried both ListView1.Select() and ListView1.Focus() but these seem to do nothing.

What am I missing??

Thanks

EDIT As pointed out below, the control is actually focused using ListView1.Select() it's just not focused in the same way I'd expect, for example, a ListBox to be focused - ie, with a particular item in the list highlighted.

How would you best focus the ListView and highlight a particular item? I have tried this in a command button on the form, but it doesn't do anything. Though it works correctly AFTER I click an Item in the ListView.

ListView1.Select()
If (ListView1.SelectedItems.Count > 0) Then
    ListView1.Items(4).Selected = True
End If

ListView1.Select works, you probably just don't see that the ListView has focus. You can verify this by checking the GotFocus and LostFocus events on the ListView:

Private Sub ListView1_GotFocus(sender As Object, e As EventArgs) Handles ListView1.GotFocus
    Me.Text = "Got Focus"
End Sub

Private Sub ListView1_LostFocus(sender As Object, e As EventArgs) Handles ListView1.LostFocus
    Me.Text = "Lost Focus"
End Sub

This simply updates your Form's title to "Got Focus" or "Lost Focus". You can force the focus in your Form Load event:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

    ListView1.Items.Add("a")
    ListView1.Items.Add("b")
    ListView1.Items.Add("c")

    ListView1.Select()

End Sub
listview1.focus()

For I as Integer = 0 to ListView1.Items.Count - 1
    If ListView1.Items(i).Text = "youritemtexthere" then
         ListView1.Items(i).Selected = true
    End If
End For

or if you have the index but not a known text just do:

listview1.focus()
ListView1.Items(index).Selected = true

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM