我们先来看下效果图吧!
下面我们来说下实现步骤
1.创建自定义控件
创建一个自定义控件,添加新项---自定义控件
2.实现自定义datagridview控件
使刚创建的自定义控件继承datagridview,然后在自定义控件中拖放一个button按钮,然后在datagridview中的单元格获得焦点的时候,使当前单元格在当前单元格的右侧显示一个按钮.
代码如下:
[csharp]
public partial class DataGridViewButton : DataGridView
{
private Array _ShowButtonColumns; //有按钮的列名称
/// <summary>
/// 设置要显示按钮的列
/// </summary>
/// <param name="ShowButtonColumns"></param>
public void SetParam(Array ShowButtonColumns)
{
_ShowButtonColumns = ShowButtonColumns;
}
public DataGridViewButton()
{
InitializeComponent();
this.Controls.Add(button1);
}
/// <summary>
/// 数组中是否有与指定值相等的元素
/// </summary>
/// <param name="columnName"></param>
/// <param name="ShowButtonColumns"></param>
/// <returns></returns>
private bool IsShowButtonColumn(string columnName, Array ShowButtonColumns)
{
if (string.IsNullOrEmpty(columnName) || ShowButtonColumns == null || ShowButtonColumns.Length < 1) return false;
foreach (string astr in ShowButtonColumns)
if (astr == columnName) return true;
return false;
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
private void DataGridViewButton_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (IsShowButtonColumn(this.Columns[this.CurrentCell.ColumnIndex].Name, _ShowButtonColumns))
{
Point p = new Point();
if (this.button1.Height != this.Rows[this.CurrentCell.RowIndex].Height)
{
this.button1.Height = this.Rows[this.CurrentCell.RowIndex].Height;
}
#region 获取X轴的位置