Home All Groups Group Topic Archive Search About

AutoScroll listbox as I type

Author
12 Apr 2006 12:21 PM
Selva Chinnasamy
I like to implement auto scrolling to the best match in the listbox as I
type.
Your response is highly appreciated.

Selva

Author
13 Apr 2006 9:04 AM
Gary Chang[MSFT]
Hi Selva,

Soulds like you do not like the listbox builtin AutoScroll behavior, if so
how about the following workaround:

  Dim searchChars As String
  ...
    Private Sub ListBox1_KeyUp(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyUp
        searchChars += Chr(e.KeyValue)
        ListBox1.SelectedIndex = ListBox1.FindString(searchChars)
    End Sub

    Private Sub ListBox1_KeyPress(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles ListBox1.KeyPress
        e.Handled = True
    End Sub

By the way, you may need to use a timer to clean the searchChars string
once per second(or in a more duration time).

Wish this help!

Best regards,

Gary Chang
Microsoft Online Community Support
==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
Author
13 Apr 2006 12:38 PM
Selva
Gary, Thanks for your reply. I have already tried the steps that you have
shown below.

I have attached debug statements below,

I wanted to search for screen "set".

As soon as I type 2nd char "E" even though the keypress Event finds the
right screen, event SelectedIndexChanged is excuted after handling the
Keypress event, which makes to search for screens starting with "E" instead
of "SE".


Search for : s

Event SelectedIndexChanged. Current Screen : SealerSelectFlapPosition
Event KeyPress. Current Screen :SealerSelectFlapPosition
Event SelectedIndexChanged. Current Screen : SealerWetnessSelect

Search for : se
Event SelectedIndexChanged. Current Screen : SealerSelectFlapPosition
Event KeyPress. Current Screen :SealerSelectFlapPosition
Event SelectedIndexChanged. Current Screen : EndSession

Search for : set
Event SelectedIndexChanged. Current Screen : SetupAutoFeederTimeout
Event KeyPress. Current Screen :SetupAutoFeederTimeout
Event SelectedIndexChanged. Current Screen : TechDataSuperRpt


Your response is greatly appreciated.

Selva



""Gary Chang[MSFT]"" wrote:

Show quoteHide quote
> Hi Selva,
>
> Soulds like you do not like the listbox builtin AutoScroll behavior, if so
> how about the following workaround:
>
>   Dim searchChars As String
>   ...
>     Private Sub ListBox1_KeyUp(ByVal sender As System.Object, ByVal e As
> System.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyUp
>         searchChars += Chr(e.KeyValue)
>         ListBox1.SelectedIndex = ListBox1.FindString(searchChars)
>     End Sub
>
>     Private Sub ListBox1_KeyPress(ByVal sender As System.Object, ByVal e As
> System.Windows.Forms.KeyPressEventArgs) Handles ListBox1.KeyPress
>         e.Handled = True
>     End Sub
>
> By the way, you may need to use a timer to clean the searchChars string
> once per second(or in a more duration time).
>
> Wish this help!
>
> Best regards,
>
> Gary Chang
> Microsoft Online Community Support
> ==================================================
> When responding to posts, please "Reply to Group" via your newsreader so
> that others may learn and benefit from your issue.
> ==================================================
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
>
Author
13 Apr 2006 1:13 PM
Selva
Gary, I found the solution for the problem by letting the OS know that I have
already handled the event.

I have added the following in KeyPress Event

e.Handled = True

Selva

""Gary Chang[MSFT]"" wrote:

Show quoteHide quote
> Hi Selva,
>
> Soulds like you do not like the listbox builtin AutoScroll behavior, if so
> how about the following workaround:
>
>   Dim searchChars As String
>   ...
>     Private Sub ListBox1_KeyUp(ByVal sender As System.Object, ByVal e As
> System.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyUp
>         searchChars += Chr(e.KeyValue)
>         ListBox1.SelectedIndex = ListBox1.FindString(searchChars)
>     End Sub
>
>     Private Sub ListBox1_KeyPress(ByVal sender As System.Object, ByVal e As
> System.Windows.Forms.KeyPressEventArgs) Handles ListBox1.KeyPress
>         e.Handled = True
>     End Sub
>
> By the way, you may need to use a timer to clean the searchChars string
> once per second(or in a more duration time).
>
> Wish this help!
>
> Best regards,
>
> Gary Chang
> Microsoft Online Community Support
> ==================================================
> When responding to posts, please "Reply to Group" via your newsreader so
> that others may learn and benefit from your issue.
> ==================================================
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
>
Author
14 Apr 2006 2:44 AM
Gary Chang[MSFT]
That's great, Selva!

Have a nice day!

Best regards,

Gary Chang
Microsoft Online Community Support
==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.