将TextBox放在DataGridView中的标题列顶部

时间:2012-05-18 17:31:29

标签: c# winforms datagridview

我有以下函数响应DataGridView中的ColumnHeaderMouseDoubleClick事件:

void grid_ColumnHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) {
    TextBox t = new TextBox();
    //make the new textbox the same size as the header to cover it up until text is entered
    t.Width = ((DataGridView)sender).CurrentCell.ContentBounds.Width;
    t.Height = ((DataGridView)sender).CurrentCell.ContentBounds.Height;
    t.Dock = DockStyle.Fill;
    t.Visible = true;
    t.BringToFront();
    t.Text = "TEST";
    Controls.Add(t);
}

所有这些代码都发生在扩展Panel的类中,并且将一个DataGridView添加到面板的控件中。当我双击标题并在此处理程序上放置断点时,将调用该处理程序,但我在任何地方都看不到该文本框。有人知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

我首先将文本框设为一个类字段(在事件触发器之外声明它,以便它在结束时不会超出范围)。可能还要设置textBox的坐标:)。在这台机器上没有VS试试这个,但我希望这会有所帮助。