Cipher
Cipher

Reputation: 6082

Fire button event manually

I have a search text box on my WPF Windows. Whenever, the user presses enter key after writing some query in the textBox, the process should start.

Now, I also have this Search button, in the event of which I perform all this process.

So, for a texBox:

<TextBox x:Name="textBox1" Text="Query here" FontSize="20" Padding="5" Width="580" KeyDown="textBox1_KeyDown"></TextBox>

private void queryText_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Return)
            {
                //how do I fire the button event from here?
            }
        }

Upvotes: 0

Views: 1162

Answers (4)

Maheep
Maheep

Reputation: 5605

A event can not be fired/raised from outside the class in which it is defined.(Using reflection you can definitely do that, but not a good practice.)

Having said that, you can always call the button click event handler from the code as simple method call like below

private void queryText_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        OnSearchButtonClick(SearchButton, null);
    }
}

Upvotes: 0

Ankesh
Ankesh

Reputation: 4885

You can Create a Common Method to do search for ex

public void MySearch()
{
     //Logic
}

Then Call it for diffetnt places you want like...

private void queryText_KeyDown(object sender, KeyEventArgs e)
     {
         if (e.Key == Key.Return)
         {
                      MySearch();
         }
     }

private void buttonSearch_onClick(object sender, EventArgs e)
{
     MySearch();
}

Upvotes: 0

Jason
Jason

Reputation: 6926

Are you talking about manually invoking buttonSearch_onClick(this, null);?

Upvotes: 0

Philip Fourie
Philip Fourie

Reputation: 116827

It is possible but rather move your search logic into a method such as DoSearch and call it from both locations (text box and the search button).

Upvotes: 1

Related Questions