Search code examples
c#forwardingkeystroke

Send keystroke to other control


Easy one for you guys.

I have a textbox on top of a listbox.

The textbox is use to filter ther data in the listbox.

So... When the user type in the textbox, I would like to "trap" the down/up/pagedown/pageup keystrokes and fowarding them to the listbox.

I know I could use the Win32 API and send the WM_KeyDown message. But there's must be some .NET way to do this.


Solution

  • SendKeys.Send() Method.

     private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                listBox1.Focus();
                SendKeys.Send(e.KeyChar.ToString());
            }
    

    Here is code through which you can select a list item.

    private void Form1_Load(object sender, EventArgs e)
            {
                textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                textBox1.AutoCompleteSource=AutoCompleteSource.CustomSource;
                string[] ar = (string[])(listBox1.Items.Cast<string>()).ToArray<string>();
                textBox1.AutoCompleteCustomSource.AddRange(ar);
            }
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                listBox1.Text  = textBox1.Text;
            }