winform中dataGridView如何实现按钮列控制图片列,点击关闭按钮,亮红灯,按钮text变为打开;再次点击按钮,亮绿灯,text显示为关闭。
用下面的代码试试,我没调整样式
下面代码里面有一行 Image.Equals(CircularRed) 因为我的图片实例是相同的所以直接这样比较就行了,假如说你的实例不同可以借助Row.Cells["Image"].Tag来进行比较
/// <summary>
/// 测试
/// </summary>
public void TestDelegate()
{
//pictureBox_Test.Image = CircularRed;
//红色圆形
var CircularRed = GetCircular(System.Drawing.Color.Red);
//绿色圆形
var CircularGreen = GetCircular(System.Drawing.Color.Green);
dataGridView.Columns.Add(new DataGridViewImageColumn
{
Name = "Image",
HeaderText = "图片",
});
dataGridView.Columns.Add(new DataGridViewButtonColumn
{
Name = "Button",
HeaderText = "按钮",
//UseColumnTextForButtonValue = true,
//Text = "打开"
});
dataGridView.Rows.Add(CircularRed, "打开");
dataGridView.Rows.Add(CircularRed, "打开");
dataGridView.Rows.Add(CircularRed, "打开");
dataGridView.CellClick += (sender, e) =>
{
if (e.RowIndex < 0)
{
return;
}
if (dataGridView.Columns[e.ColumnIndex].Name.Equals("Button"))
{
//确保是按钮这一列
var Row = dataGridView.Rows[e.RowIndex];
var Image = Row.Cells["Image"].Value;
if (Image.Equals(CircularRed))
{
Row.Cells["Image"].Value = CircularGreen;
Row.Cells["Button"].Value = "关闭";
}
else
{
Row.Cells["Image"].Value = CircularRed;
Row.Cells["Button"].Value = "打开";
}
}
};
}
/// <summary>
/// 获取一个圆形
/// </summary>
/// <param name="color">颜色</param>
/// <returns></returns>
public System.Drawing.Bitmap GetCircular(System.Drawing.Color color)
{
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(50, 50);
System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap);
var Pen = new Pen(color);
var RectangleF = new RectangleF(10, 10, 30, 30);
System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(color);
graphics.FillEllipse(myBrush, RectangleF);
graphics.DrawEllipse(Pen, RectangleF);
graphics.Dispose();
return bitmap;
}
【相关推荐】