Question: I have a form with some controls with KeyPress event. For example:

```
    private void MyTextBoxKeyPress(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            *****
        }
    }

```

From this "parent" form i call another form:

```
Application.Run(new ChildForm());

```

Now i select one of parent form's control and press Enter button. But nothing heppens? key press not shoot hte event.  

In both forms i have:

```
KeyPreview=false;

```

What i do wrong here? How to shoot key press events in parent form?

Answer: 
This works fine for me , The difference is that it is key press event so it contains KeypressEventArgs

```
    private void MyTextBoxKeyPress(object sender, KeyPressEventArgs e)
    {
         if (e.KeyChar == (char)Keys.Enter)
        {
             *****

        } 
     }

```

for keydown event 

```
   private void MyTextBoxKeyPress(object sender, KeyEventArgs e)
    {
        if (e.KeyValue == (char)Keys.Enter)
        {
/*only use Apllication.run(..) in Application entry point when starting Application. it makes current thread to communicate with window and main thread is enough to do it .
 * if Form layout is already there
 *
 */
            new Form2().Show();

/*
 * if you want to make new Form  programmatically and only resume from same line if form is closed
 *
 */
            Form form = new Form();
            form.ShowDialog();

        }
    }

```
Only use 1 `Application.Run` (this is for your main form).

You can show your other form by creating it and showing it:

```
Form frm = new ChildForm();
frm.Show()

```