2017-08-14 89 views
0

全部: 我是一個新手,使用DataGridView1,通過Visual Studio數據源函數綁定到SQL Server數據庫表。 我已經填充了DataGrid中的表格中的所有列,其中包含一個包含Blobbed圖像的列,它在DataGridView中正確顯示爲圖像的一個切片。 我希望用戶能夠單擊包含圖像切片的DataGridView1單元格,並以特定圖像爲背景(或至少在同一個表單上填充一個圖片框)啓動一個新的表單,但我似乎無法能夠引用特定圖像中單擊的單元格... 我都試過了,沒有成功,使用「DataGridViewImageColumn」,如:DataGridView - 單擊單元格中的圖像,並顯示新的窗體全尺寸圖像

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

有人能正確的代碼奉勸用來引用這個特定的圖像?

回答

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構造使用內存流在PIC盒加載圖像。

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

我希望它能幫助你,祝你好運!

+0

感謝Essam,但下面一行是生成未處理的異常: 位圖img =(位圖)dataGridView.CurrentCell.Value; 「無法投射類型爲」System Byte []「的對象以鍵入System.Drawing.Bitmap」 你能幫忙嗎? – user8441794

+0

從不介意 - 我想通了 - 我用: ImageConverter ic =新的圖像轉換器(); 圖片img =(圖片)ic.ConvertFrom(dataGridView1.CurrentCell.Value); – user8441794

+0

謝謝你的領先! – user8441794