private void dataGridView1_EditingControlShowing( object sender, DataGridViewEditingControlShowingEventArgs e) ... { if (e.Control is DataGridViewTextBoxEditingControl) ...{ Button btn = new Button(); btn.Height = e.Control.Height; btn.Width = e.Control.Width / 6; btn.Top = 0; btn.Left = e.Control.Width - btn.Width; btn.Cursor = Cursors.Default; btn.Click += new EventHandler(btn_Click); btn.Dock = DockStyle.Right; textbox.Controls.Clear(); textbox.Controls.Add(btn); } } void btn_Click( object sender, EventArgs e) ... { Form f = new Form(); f.StartPosition = FormStartPosition.Manual; Button btn = sender as Button; Rectangle bound = btn.Parent.RectangleToScreen(btn.Bounds); f.Location = new Point(bound.Left, bound.Height + bound.Top); f.Show(this); } 刚才浏览论坛时发现某小强回复别人问题的答案,感觉不错 记录一下 以备不时之需