我想要DataGridViewButtonColumn
充当DataGridViewCheckBoxColumn
。意思是在按钮内部有一些图像作为true
,另一图像为false
,并通过DataMember
绑定到属性。 我认为一个类继承DataGridViewCheckBoxColumn
和override
paint
方法“应该”的工作。DataGridViewButtonColumn充当DataGridViewCheckBoxColumn
回答
只要使用DataGridViewCheckBoxColumn
,但处理CellPaint
事件DataGridView
并绘制一个图像检查状态和另一个未选中状态。
例
创建一个名为Form
Form1
再滴上形成DataGridView
控制,并用下面的代码替换的Form1.cs
内容。还请确保您将Checked
和UnChecked
图像添加到Resources
。
然后你会看到这样的结果:
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
this.dataGridView1.CellPainting += dataGridView1_CellPainting;
}
private void Form1_Load(object sender, EventArgs e)
{
var dt = new DataTable();
dt.Columns.Add("Column1", typeof(bool));
dt.Rows.Add(false);
dt.Rows.Add(true);
this.dataGridView1.DataSource = dt;
}
void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex >= 0)
{
var value = (bool?)e.FormattedValue;
e.Paint(e.CellBounds, DataGridViewPaintParts.All &
~DataGridViewPaintParts.ContentForeground);
var img = value.HasValue && value.Value ?
Properties.Resources.Checked : Properties.Resources.UnChecked;
var size = img.Size;
var location = new Point((e.CellBounds.Width - size.Width)/2,
(e.CellBounds.Height - size.Height)/2);
location.Offset(e.CellBounds.Location);
e.Graphics.DrawImage(img, location);
e.Handled = true;
}
}
快速问题我将代码移到了独立的DataGridViewColumn中,所以我可以自由使用它。它的工作,但我没有得到视觉更新,当我在编辑模式下,只有当我退出更新才会生效。任何想法为什么? – ihisham
你确定你是从'DataGridViewCheckBoxColumn'派生的吗?嗯,也许最好发布一个包含您创建的自定义列的代码的新问题。 –
在这里我发布的代码使用的问题https://stackoverflow.com/questions/46709110/custom-datagridviewcheckboxcell-visual-update-doesnt-work-in-edit-mode – ihisham
- 1. DataGridViewButtonColumn
- 2. DataGridViewCheckBoxColumn
- 3. .NET datagridviewcheckboxcolumn
- 4. DataGridViewButtonColumn图标
- 5. c#DataGridViewButtonColumn auto click
- 6. DataGridViewCheckBoxColumn窗口
- 7. C#DataGridViewCheckBoxColumn Hide/Gray-Out
- 8. 添加一个DataGridViewCheckBoxColumn
- 9. 检查DataGridViewCheckBoxColumn的值
- 10. 设置在图像上DataGridViewButtonColumn
- 11. DataGridViewCheckBoxColumn CellContentClick事件问题
- 12. 绑定XML真假DataGridViewCheckBoxColumn
- 13. DataGridViewCheckBoxColumn:布尔列上的FormatException
- 14. 当第一个checkBox列被选中时获取两个DataGridViewCheckBoxColumn
- 15. 无法显示DataGridViewButtonColumn中的文本
- 16. 如何使用DataGridViewButtonColumn非绑定的DataGridView
- 17. 更改DataGridViewButtonColumn的每行按钮文本
- 18. DatagridviewButtonColumn对每行都可见,当点击行/列的单元格时
- 19. 无法在DataGridViewCheckBoxColumn中复选框?
- 20. DataGridViewCheckBoxColumn - 如果复选框检查问题
- 21. 将DataGridViewCheckBoxColumn绑定到布尔值数组
- 22. CellContentClick事件中的Datagridviewcheckboxcolumn问题(VB Net)
- 23. 绑定DataGridViewCheckBoxColumn没有更新绑定源
- 24. DataGridViewCheckBoxColumn更改复选框显示
- 25. 充当3
- 26. Array_splice充当array_slice?
- 27. NumberFormatException当填充ArrayList
- 28. Awk充当替换
- 29. 创建充当宏
- 30. 当Tooltip.Content被填充?
那么什么是你的问题?你有什么尝试? –
到目前为止我卡在涂料的方法。不知道该怎么办 – ihisham
不需要继承任何东西。只需使用网格的CellPainting事件。 – LarsTech