class Childform : Form { DataGridView grid; Control LastFocus = null; public Childform() { grid = new DataGridView(); grid.Columns.Add(new DataGridViewTextBoxColumn()); grid.EditMode = DataGridViewEditMode.EditOnEnter; Controls.Add(grid); this.Activated += new EventHandler(Childform_Activated); this.Deactivate += new EventHandler(Childform_Deactivate); } void Childform_Activated(object sender, EventArgs e) { if (this.LastFocus != null) this.LastFocus.Focus(); } void Childform_Deactivate(object sender, EventArgs e) { this.LastFocus = this.ActiveControl; } }I've tried this and it works for me.
using System.Windows.Forms; >using System.Collections.Generic; > >public class Test >{ > static void Main() > { > Application.Run(new MainForm()); > } >} > >class MainForm : Form >{ > public MainForm() > { > WindowState = FormWindowState.Maximized; > IsMdiContainer = true; > Form frm = new Childform(); > frm.MdiParent = this; > frm.Show(); > Form frm2 = new Childform(); > frm2.MdiParent = this; > frm2.Show(); > frm2.Left = 2000; > } >} > >class Childform : Form >{ > DataGridView grid; > > public Childform() > { > grid = new DataGridView(); > grid.Columns.Add(new DataGridViewTextBoxColumn()); > grid.EditMode = DataGridViewEditMode.EditOnEnter; > Controls.Add(grid); > } > > > protected override void OnClick(System.EventArgs e) > { > base.OnClick(e); > grid.Focus(); > } > > protected override void OnLoad(System.EventArgs e) > { > base.OnLoad(e); > grid.Focus(); > } >} >