我想在Datagridview的当前单元格中添加自定义控件(Button) 控制。我已经创建了自定义控件(Button)。我的要求就是我 单击Datagridview的任何单元格,此控件应显示在该单元格上。 这是屏幕截图。
请帮助我克服这个问题。任何帮助表示赞赏。
注意: - 此按钮不是下拉按钮。它只是一个带下拉图像的简单按钮。点击此按钮,将打开一个弹出窗口。
答案 0 :(得分:2)
您只需要1个按钮,将其Parent
设置为DataGridView
并根据当前的单元格边界更新其位置。这应该在CellPainting
事件处理程序中完成,如下所示:
Button button = new Button(){Width = 20, Height = 20};
int maxHeight = 20;
button.Parent = dataGridView1;//place this in your form constructor
//CellPainting event handler for both your grids
private void dataGridViews_CellPainting(object sender,
DataGridViewCellPaintingEventArgs e) {
DataGridView grid = sender as DataGridView;
if (grid.CurrentCell.RowIndex == e.RowIndex &&
grid.CurrentCell.ColumnIndex == e.ColumnIndex) {
button.Top = e.CellBounds.Top - 2;
button.Left = e.CellBounds.Right - button.Width;
button.Height = Math.Min(e.CellBounds.Height, maxHeight);
button.Invalidate();
}
}
//Enter event handler for both your grids
private void dataGridViews_Enter(object sender, EventArgs e){
button.Parent = (sender as Control);
}
注意:上面的CellPainting
事件处理程序(用于两个网格)只应对button
执行某些操作,如果添加其他代码(例如绘图),两个网格都将受到该代码的影响。