Q:

How can I make Ctrl+M an event that brings up a form?

I have this code:
private void button5_Click(object sender, EventArgs e)
{
    Magnifier20070401.MagnifierForm mf = new Magnifier20070401.MagnifierForm();
    mf.Show();
}

It shows the target form correctly. But instead of using a button click, I want to use Ctrl+M to show this form. If the users types Ctrl+M again, I want to close the the form.
How can I do this?
Edit:
This is what i did wich is working :
private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode.ToString() == "M")
            {
                Magnifier20070401.MagnifierForm mf = new Magnifier20070401.MagnifierForm();
                mf.Show();
            }
        }

In the constructor of Form1 i added: 
this.KeyPreview = true;

So now when i click on Ctrl+M i see the new Form.
What i need now is how to make that if i click again on Ctrl+M it will close the new Form.
Maybe using a flag ?
Edit:
This is what i did now:
private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode.ToString() == "M")
            {

                    if (mf == null)
                    {
                        mf = new Magnifier20070401.MagnifierForm();
                        mf.Show();
                    }
                    else
                    {
                        mf.Close();
                        this.Invalidate();
                    }
            }
        }

But even doing this.Invalidate(); i don't see the new Form closed.
But if im using put a breakpoint on the mf.Close(); and step into(F11) i see it close when making continue.
Why it dosen't close without using a breakpoint ?

A:

You can add onKeyPress or onKeyDown 
and check if  Ctrl+M were pressed 
private void OnKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 
if (((Control.ModifierKeys & Keys.Control) == Keys.Control) 
    && (e.KeyChar == 'M'|| e.KeyChar == 'm'))
{
        mf.Show();
}

