Here is a nice tutorial to make a focusable control. I just followed it to make sure it works. Also, added a keypress event to the control which works on condition that the control has focus.
http://en.csharp-online.net/Architecture_and_Design_of_Windows_Forms_Custom_Controls%E2%80%94Creating_a_Focusable_Control
Basically all I did was make an instance of my custom control, which inherits from Control. Then added KeyPress, Click, and Paint event. Key press was just a message:
void CustomControl1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(string.Format("You pressed {0}", e.KeyChar));
}
Click event just has:
this.Focus();
this.Invalidate();
The paint event I made like this, just so it was visible:
protected override void OnPaint(PaintEventArgs pe)
{
if (ContainsFocus)
pe.Graphics.FillRectangle(Brushes.Azure, this.ClientRectangle);
else
pe.Graphics.FillRectangle(Brushes.Red, this.ClientRectangle);
}
Then, in the main form, after making an instance called mycustomcontrol and adding the event handlers:
mycustomcontrol.Location = new Point(0, 0);
mycustomcontrol.Size = new Size(200, 200);
this.Controls.Add(mycustomcontrol);
The example is much neater than my five minute code, just wanted to be sure that it was possible to solve your problem in this way.
Hope that was helpful.