DataGridView - 单击单元格中的图像并显示具有完整大小图像的新表单

时间:2017-08-14 16:52:26

标签: c# image datagridview

全部: 我是一个使用DataGridView1的新手,它通过Visual Studio数据源函数绑定到SQL Server数据库表。 我在DataGrid中填充了表格中的所有列,包括一个包含Blobbed图像的列,它在DataGridView中正确显示为图像的一个切片。 我希望用户能够单击包含图像切片的DataGridView1单元格并启动一个新表单,其中特定图像作为背景(或者至少填充同一表单上的Picturebox),但是我似乎无法在单击的单元格中引用特定图像... 我尝试过使用" DataGridViewImageColumn"像:

    imageColumn = new DataGridViewImageColumn();
    imageColumn.Image = this.imageDataGridViewImageColumn.Image;
    frmPic.BackgroundImage = imageColumn.Image;

有人可以建议使用正确的代码来引用此特定图像吗?

1 个答案:

答案 0 :(得分:0)

我认为你可以使用 dataGridView_CellClick 事件处理程序,

所以你可以这样做:

 private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
 { 
    // set index to be the pic column, assume that pic in column 0
    int index = 0;

    // just check that the clicked cell is the right cell
    // and every thing is okay.

    if (dataGridView.CurrentCell.ColumnIndex.Equals(index) && e.RowIndex != -1)
    if (dataGridView.CurrentCell != null && dataGridView.CurrentCell.Value != null)
    {
        // cast to image
        Bitmap img = (Bitmap)dataGridView.CurrentCell.Value;

        // load image data in memory stream
        MemoryStream ms = new MemoryStream();
        img.save(ms, ImageFormat.Jpeg);

        // now you can open image in any picBox by memory stream.
        // if you want to open pic in other form, you need to pass memory 
        // stream to this form, e.g., in constructor.

        // open other form
        NewForm obj = new NewForm(ms)
    }
 }

NewForm构造函数中,使用内存流在图片框中加载图片。

 public NewForm(MemoryStream ms)
 {
    picBox.Image = Image.FromStream(ms);
 } 

我希望它对你有所帮助,祝你好运!