我想要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