顯示圖像在按鈕
您可以添加一個DataGridViewButtonColumn
,然後處理CellPainting
事件電網,並檢查是否引發該事件爲您的按鈕欄,然後繪製圖像在上面。在活動結束時,不要忘記設置e.Handled = true;
。
在下面的代碼中,我認爲你有一個像SomeImage
的圖像資源:
private void grid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex < 0)
return;
//I supposed your button column is at index 0
if (e.ColumnIndex == 0)
{
e.Paint(e.CellBounds, DataGridViewPaintParts.All);
var w = Properties.Resources.SomeImage.Width;
var h = Properties.Resources.SomeImage.Height;
var x = e.CellBounds.Left + (e.CellBounds.Width - w)/2;
var y = e.CellBounds.Top + (e.CellBounds.Height - h)/2;
e.Graphics.DrawImage(Properties.Resources.SomeImage, new Rectangle(x, y, w, h));
e.Handled = true;
}
}
顯示圖像,而按鈕
要顯示所有列的單個圖像,包括新行,您可以設置DataGridViewImageColumn
的Image
財產。這樣,圖像將在該列顯示在所有行中:如果你可能想爲細胞不同的圖像
dataGridView1.Columns.Add(new DataGridViewImageColumn(){
Image = Properties.Resources.SomeImage, Name = "someName", HeaderText = "Some Text"
});
此外,您還可以在CellFormatting
事件設置的DataGridViewImageColumn
格式化的值:
void grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.RowIndex < 0)
return;
//I supposed the image column is at index 1
if (e.ColumnIndex == 1)
e.Value = Properties.Resources.SomeImage;
}
您還可以將DataGridViewImageColumn
的Image
屬性設置爲圖像,但圖像不會顯示在新行上。
手柄點擊
要處理點擊圖片/按鈕,您可以處理CellClick
或CellContentClick
事件:
void grid_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0)
return;
//I suposed you want to handle the event for column at index 1
if (e.ColumnIndex == 1)
MessageBox.Show("Clicked!");
}
如果處理CellContentClick
你應該對圖像準確點擊,當你使用image列。
截圖
下面是結果。第一列是示出圖像和第二列的按鈕列是一個正常的圖像列設定爲顯示單個圖像:
http://www.codeproject.com/KB/grid/DGV_ImageButtonCell.aspx – MethodMan
所以,當你說它沒有正確顯示時,它是否根本沒有出現?它顯示,但顯示器有問題嗎? – Jace
我已經嘗試了各種可以找到的示例代碼。我最終會看到一個沒有標籤的灰色按鈕,或者是一個灰色的按鈕,上面寫着windows.system.bitmap。當我按下按鈕來調用啓動/停止服務的功能時,我也無法解決問題。 – Brad