我想要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. .NET datagridviewcheckboxcolumn
- 3. DataGridViewButtonColumn图标
- 4. DataGridViewCheckBoxColumn窗口
- 5. C#DataGridViewCheckBoxColumn Hide/Gray-Out
- 6. 设置在图像上DataGridViewButtonColumn
- 7. DataGridViewCheckBoxColumn:布尔列上的FormatException
- 8. 当第一个checkBox列被选中时获取两个DataGridViewCheckBoxColumn
- 9. 更改DataGridViewButtonColumn的每行按钮文本
- 10. 如何使用DataGridViewButtonColumn非绑定的DataGridView
- 11. 无法显示DataGridViewButtonColumn中的文本
- 12. 绑定DataGridViewCheckBoxColumn没有更新绑定源
- 13. DataGridViewCheckBoxColumn更改复选框显示
- 14. 将DataGridViewCheckBoxColumn绑定到布尔值数组
- 15. Array_splice充当array_slice?
- 16. DbContext不充当PerWebRequest
- 17. NSCFArray不充当NSArray
- 18. 如何获取/设置单元格中DataGridViewButtonColumn的值?
- 19. 如何分离整个DataGridView的CellClick事件的DataGridViewButtonColumn上的CellClick?
- 20. 如何在一列中创建两个DataGridViewButtonColumn?
- 21. DataGridViewButtonColumn启用按钮绑定布尔字段
- 22. CSS:主动充当悬停?
- 23. 让textarea充当输入
- 24. ClassCastException当充气Android片段
- 25. Java InvocationTargetException当填充TableView
- 26. 充当merb的标签?
- 27. 当填充关联到ListFragment
- 28. 当自动填充地址
- 29. hg充当Windows服务
- 30. Android:Edittext充当搜索引擎
那么什么是你的问题?你有什么尝试? –
到目前为止我卡在涂料的方法。不知道该怎么办 – ihisham
不需要继承任何东西。只需使用网格的CellPainting事件。 – LarsTech