重写DataGridViewCell多个按钮样式
时间: 2023-07-20 11:03:51 浏览: 48
要重写DataGridViewCell中多个按钮的样式,您可以继承DataGridViewButtonCell并重写它的Paint()方法。在这个方法中,您需要绘制每个按钮并为它们设置样式。
以下是一个示例代码,演示如何绘制两个不同样式的按钮:
```c#
public class CustomButtonCell : DataGridViewButtonCell
{
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
ButtonRenderer.DrawButton(graphics, new Rectangle(cellBounds.X + 5, cellBounds.Y + 5, cellBounds.Width / 2 - 10, cellBounds.Height - 10), "Button 1", cellStyle.Font, false, GetButtonState(elementState));
ButtonRenderer.DrawButton(graphics, new Rectangle(cellBounds.X + cellBounds.Width / 2 + 5, cellBounds.Y + 5, cellBounds.Width / 2 - 10, cellBounds.Height - 10), "Button 2", cellStyle.Font, false, GetButtonState(elementState));
}
private PushButtonState GetButtonState(DataGridViewElementStates elementState)
{
if ((elementState & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected)
{
return PushButtonState.Pressed;
}
else if ((elementState & DataGridViewElementStates.MouseOver) == DataGridViewElementStates.MouseOver)
{
return PushButtonState.Hot;
}
else
{
return PushButtonState.Normal;
}
}
}
```
在上面的代码中,我们使用了ButtonRenderer类来绘制按钮,并根据单元格的状态设置按钮的Push状态(正常、按下或热)。在Paint()方法中,我们绘制了两个按钮,一个在左边,一个在右边,它们具有不同的样式。
最后,将CustomButtonCell作为DataGridView列的单元格模板。您可以在DataGridView的设计视图中或在代码中设置单元格模板,例如:
```c#
dataGridView1.Columns[0].CellTemplate = new CustomButtonCell();
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)