DataGridView图像按钮列

时间:2011-07-11 04:15:53

标签: c# winforms datagridview imagebutton

我想在datagridviews列中添加图片按钮。我在datagridviewbuttonColumn中添加了datagridview 但我没有将图像设置为此。我想在datagridviews列中添加带按钮的图像,当单击此按钮时,datagridview行编辑或删除。请问我该怎么做!

5 个答案:

答案 0 :(得分:6)

可以实现的一种方法是简单地从DataGridViewButtonCell重写Paint方法,并从图形参数调用DrawImage。呼叫必须在发生基本呼叫后发生。

public class DeleteCell : DataGridViewButtonCell {
        Image del = Image.FromFile("..\\..\\img\\delete.ico");
        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)
        {
            base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
            graphics.DrawImage(del, cellBounds);
        }
    }

之后,只需创建自己的DataGridViewButtonColumn,并将创建的DeleteCell设置为单元格模板:

public class DeleteColumn : DataGridViewButtonColumn {
        public DeleteColumn() {
            this.CellTemplate = new DeleteCell();
            this.Width = 20;
            //set other options here 
        }
    }

就是这样。现在使用DeleteColumn为您的DataGridView:

dgvBookings.Columns.Add(new DeleteColumn());

如果按钮单击的结果操作取决于单元格行,请确保正确处理单击,即捕获单元格行索引。

答案 1 :(得分:3)

虽然DataGridViewButtonColumn但它并没有直接提供显示图片的方式。

以下链接可指导您逐步完成任务:

DataGridView Image Button Cell

希望这会有所帮助......

答案 2 :(得分:0)

您可以使用自定义的DataGridViewImage类,该类来自DataGridViewImageButtonCell类,如下所示

public class DataGridViewImageButtonDeleteCell : DataGridViewImageButtonCell
{
    public override void LoadImages()
    {
       // Load them from a resource file, local file, hex string, etc.          
    }
}

另外,还要检查this主题

答案 3 :(得分:0)

只需创建带有图像列的datatable并向其添加图像

dtMain.Columns.Add(“ImageColumn”,typeof(Image));

dtMain.Rows.Add(Image.FromFile(photopath +“1.jpg”));

然后在事件dataGridViewMain_CellContentClick上编写以下代码

  if (e.ColumnIndex == dataGridViewMain.Columns["ImageColumn"].Index)
  {
  lblShowCellData.Text = dataGridViewMain.Rows[e.RowIndex].Cells["CustomerName"].Value.ToString();
  // Do some thing else....
  }

http://tablegridview.blogspot.in

下载完整代码

答案 4 :(得分:-4)

可以在asp:ButtonColumn的Text-Property中提供HTML。所以你实际上可以这样做:

<asp:ButtonColumn Text="&lt;img src='icons/delete.gif' border='0' title='Delete entry' &gt;" CommandName="delete"></asp:ButtonColumn>

这呈现如下(HTML):

<td>
  <a href="...">
    <img src='icons/delete.gif' border='0' title='Delete entry' />
  </a>
</td>