如何在datagridview上为每一行显示图像或以某种方式在datagridview上显示图像? [英] How to show images on datagridview for each row or show image on datagridview somehow?

查看:118
本文介绍了如何在datagridview上为每一行显示图像或以某种方式在datagridview上显示图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我正在使用我的表单中的实时流进入图片框,并使用该代码保存到我的表中:


(我在sqlite中使用blob来存储它)

 private void metroButton1_Click(object sender,EventArgs e)
{
//////////// /////////////
baglanti.Open();
SQLiteCommand cmd = new SQLiteCommand(" insert into LentiReal(image)values('" + @ pictureBox1 +"')",baglanti);

MemoryStream stream = new MemoryStream();
pictureBox1.Image.Save(stream,System.Drawing.Imaging.ImageFormat.Jpeg);
byte [] pic = stream.ToArray();
cmd.Parameters.AddWithValue(" @ pictureBox1",pic);
cmd.ExecuteNonQuery();
baglanti.Close();
MessageBox.Show(" Kaydedildi");



///////////////////

i想要在我的datagridview上显示每一行的图像,但我找不到在datagridview上显示图像的方法。你能帮助我吗?谢谢


这是我的datagridview代码:

使用System; 
使用System.Collections.Generic;使用System.ComponentModel
;
使用System.Data;使用System.Drawing
;
使用System.Linq;
使用System.Text;
使用System.Threading.Tasks;
使用System.Windows.Forms;
使用System.Data.SQLite;
使用System.IO;
命名空间WindowsFormsApplication1
{
公共部分类aramayap:MetroFramework.Forms.MetroForm
{
public aramayap()
{
InitializeComponent() ;
}
SQLiteConnection baglanti =新SQLiteConnection("数据源= D:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\大小= 10000;页面大小= 4096;同步=关闭");
DataTable tablo2 = new DataTable();
DataTable tablo3 = new DataTable();
DataTable tablo4 = new DataTable();
DataTable tablo5 = new DataTable();
DataTable tablo6 = new DataTable();

private void label2_Click(object sender,EventArgs e)
{

}

private void aramayap_Load(object sender,EventArgs e)
{
metroComboBox1.SelectedIndex = 0;

if(metroComboBox1.Text =="TümMağazalar")
{
baglanti.Open();
tablo4.Clear();
SQLiteDataAdapter adap4 =新的SQLiteDataAdapter(选择StokKodu,Kategori,Marka,Magaza为'Mağaza',Adet来自LentiReal union所有选择StokKodu为'Stok Kodu',Kategori,Marka,Magaza为'Mağaza',Adet来自LentiPlaza",baglanti);
adap4.Fill(tablo4);
dataGridView1.DataSource = tablo4;
baglanti.Close();


}
}

private void comboBox1_SelectedIndexChanged(object sender,EventArgs e)
{

}
private void textBox1_TextChanged(object sender,EventArgs e)
{


}

private void button1_Click(object sender,EventArgs e)
{


}

private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e)
{

}

private void groupBox1_Enter(object sender,EventArgs e)
{

}

private void button2_Click(object sender,EventArgs e)
{




}

private void textBox1_MouseClick(object sender,MouseEventArgs e)
{

}

private void comboBox1_MouseClick(object sender,MouseEventArgs e)
{

}

private void button3_Click(object sender,EventArgs e)
{

}

private void metroComboBox1_SelectedIndexChanged(object sender,EventArgs e)
{
if(metroComboBox1。 Text =="TümMağazalar")
{
baglanti.Open();
tablo4.Clear();
SQLiteDataAdapter adap4 =新的SQLiteDataAdapter(选择StokKodu,Kategori,Marka,Magaza为'Mağaza',Adet来自LentiReal union所有选择StokKodu为'Stok Kodu',Kategori,Marka,Magaza为'Mağaza',Adet来自LentiPlaza",baglanti);
adap4.Fill(tablo4);
dataGridView1.DataSource = tablo4;
baglanti.Close();


}
if(metroComboBox1.Text ==" Lenti Real")
{
baglanti.Open();
tablo3.Clear();
SQLiteDataAdapter adap3 = new SQLiteDataAdapter("选择StokKodu,Kategori,Marka,Magaza为'Mağaza',Adet来自LentiReal",baglanti);
adap3.Fill(tablo3);
dataGridView1.DataSource = tablo3;
baglanti.Close();


}
else if(metroComboBox1.Text ==" Lenti Plaza")
{
baglanti.Open();
tablo4.Clear();
SQLiteDataAdapter adap4 = new SQLiteDataAdapter(" select StokKodu,Kategori,Marka,Magazaas'Mağaza',Adet from LentiPlaza",baglanti);
adap4.Fill(tablo4);
dataGridView1.DataSource = tablo4;
baglanti.Close();


}


}

private void metroTextBox1_Click(object sender,EventArgs e)
{
metroButton1.Enabled = false;

}

private void metroComboBox1_MouseClick(object sender,MouseEventArgs e)
{
metroButton1.Enabled = true;
}

private void metroTextBox1_TextChanged(object sender,EventArgs e)
{
// Marka Arama Kutusu
(dataGridView1.DataSource as DataTable).DefaultView .RowFilter =
string.Format(" StokKodu LIKE'{0}%'或StokKodu LIKE'%{0}%'",metroTextBox1.Text);
/////////////////////
}

private void metroButton1_Click(object sender,EventArgs e)
{

//创建Excel应用程序
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();


//在Excel应用程序中创建新的WorkBook
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);


//在工作簿中创建新的Excel表格
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

//查看程序背后的excel表
app.Visible = true;

//获取第一张纸的参考。默认情况下,其名称为Sheet1。
//存储对工作表的引用
worksheet = workbook.Sheets [" Sayfa1"];
worksheet = workbook.ActiveSheet;

//更改活动工作表的名称
worksheet.Name =""从gridview导出";


//将标题部分存储在Excel
中(int i = 1; i< dataGridView1.Columns.Count + 1; i ++)
{
worksheet.Cells [1,i] = dataGridView1.Columns [i - 1] .HeaderText;
}

//将每行和列值存储到excel表
for(int i = 0; i< dataGridView1.Rows.Count - 0; i ++)
{
for(int j = 0; j< dataGridView1.Columns.Count; j ++)
{
worksheet.Cells [i + 2,j + 1] = dataGridView1.Rows [I] .Cells [j]的.Value.ToString();
}
}
}

private void metroButton2_Click(object sender,EventArgs e)
{
this.Close();
}

private void metroButton3_Click(object sender,EventArgs e)
{

}

private void metroButton3_Click_1(object sender,EventArgs e)
{
SQLiteDataAdapter sda = new SQLiteDataAdapter(" select * from LentiReal where ID ='" + metroTextBox1.Text +"'",baglanti);
DataTable dt = new DataTable();
sda.Fill(dt);
byte [] MyData = new byte [0];
MyData =(byte [])dt.Rows [0] [1];
MemoryStream str = new MemoryStream(MyData);
pictureBox1.Image = Image.FromStream(str);

}
}
}


解决方案

你好AyhanB,


根据你的描述,你想要在datagridview上为每一行显示图像,我做一个你可以参考的简单示例。

 Private Sub Button1_Click(sender as Object,e As EventArgs)处理Button1.Click 
DataGridView1.RowTemplate.Height = 100
DataGridView1.ColumnCount = 3
DataGridView1.Columns(0).Name =" Product ID"
DataGridView1.Columns(1).Name =" Product Name"
DataGridView1.Columns(2).Name =" Product_Price"

Dim row As String()= New String(){" 1"," Product 1"," 1000"}
DataGridView1.Rows.Add(row)
row = New String(){" 2"," Product 2"," 2000"}
DataGridView1.Rows.Add(row)
row = New String(){" 3"," Product 3"," 3000"}
DataGridView1.Rows.Add(row)
row = New String(){" 4"," Product 4"," 4000"}
DataGridView1.Rows.Add(row)

Dim img As New DataGridViewImageColumn()
Dim inImg As Image = Image.FromFile(" D:\ Picture \ 1.png")
img.Image = inImg
DataGridView1.Columns.Add(img)
img.HeaderText =" Image"
img.Name =" img"

End Sub


 

更多 其他信息,请参阅:


https://stackoverflow.com/questions/16564978/displaying-image-in-datagridviewimagecolumn-in-vb-net


< a href ="http://www.vbforums.com/showthread.php?656013-Displaying-Image-in havenGridView"> http://www.vbforums.com/showthread.php?656013-Displaying-Image-in -DataGridView


最好的问候,


Cherry



Hello , i am getting live stream into the picture box in my form and i am saving into my table with that code:

(i am using blob in sqlite to store it)

private void metroButton1_Click(object sender, EventArgs e)
        {
            /////////////////////////
           baglanti.Open();
                SQLiteCommand cmd = new SQLiteCommand("insert into LentiReal(image) values ('" + @pictureBox1 + "')", baglanti);

                MemoryStream stream = new MemoryStream();
                pictureBox1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] pic = stream.ToArray();
                cmd.Parameters.AddWithValue("@pictureBox1", pic);
                cmd.ExecuteNonQuery();
                baglanti.Close();
                MessageBox.Show("Kaydedildi");
           
            
            
            ///////////////////

i want to show images for each row on my datagridview but i cant find a way to show image on datagridview.Can you help me? thanks

here is my datagridview code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SQLite;
using System.IO;
namespace WindowsFormsApplication1
{
    public partial class aramayap : MetroFramework.Forms.MetroForm
    {
        public aramayap()
        {
            InitializeComponent();
        }
        SQLiteConnection baglanti = new SQLiteConnection("Data Source=D:\\vt\\StokTakip3.db;Count Changes=off;Journal Mode=off;Pooling=true;Cache Size=10000;Page Size=4096;Synchronous=off");
        DataTable tablo2 = new DataTable();
        DataTable tablo3 = new DataTable();
        DataTable tablo4 = new DataTable();
        DataTable tablo5 = new DataTable();
        DataTable tablo6 = new DataTable();

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void aramayap_Load(object sender, EventArgs e)
        {
            metroComboBox1.SelectedIndex = 0;

            if (metroComboBox1.Text == "Tüm Mağazalar")
            {
                baglanti.Open();
                tablo4.Clear();
                SQLiteDataAdapter adap4 = new SQLiteDataAdapter("select StokKodu,Kategori,Marka,Magaza as 'Mağaza',Adet from LentiReal union all select StokKodu as 'Stok Kodu',Kategori,Marka,Magaza as 'Mağaza',Adet from LentiPlaza", baglanti);
                adap4.Fill(tablo4);
                dataGridView1.DataSource = tablo4;
                baglanti.Close();


            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
           
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            
	}

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            
            
            
           
        }

        private void textBox1_MouseClick(object sender, MouseEventArgs e)
        {
           
        }

        private void comboBox1_MouseClick(object sender, MouseEventArgs e)
        {
            
        }

        private void button3_Click(object sender, EventArgs e)
        {
           
        }

        private void metroComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (metroComboBox1.Text == "Tüm Mağazalar")
            {
                baglanti.Open();
                tablo4.Clear();
                SQLiteDataAdapter adap4 = new SQLiteDataAdapter("select StokKodu ,Kategori,Marka,Magaza as 'Mağaza',Adet from LentiReal union all select StokKodu as 'Stok Kodu',Kategori,Marka,Magaza as 'Mağaza',Adet from LentiPlaza", baglanti);
                adap4.Fill(tablo4);
                dataGridView1.DataSource = tablo4;
                baglanti.Close();


            }
            if (metroComboBox1.Text == "Lenti Real")
            {
                baglanti.Open();
                tablo3.Clear();
                SQLiteDataAdapter adap3 = new SQLiteDataAdapter("select StokKodu ,Kategori,Marka,Magaza as 'Mağaza',Adet from LentiReal", baglanti);
                adap3.Fill(tablo3);
                dataGridView1.DataSource = tablo3;
                baglanti.Close();


            }
            else if (metroComboBox1.Text == "Lenti Plaza")
            {
                baglanti.Open();
                tablo4.Clear();
                SQLiteDataAdapter adap4 = new SQLiteDataAdapter("select StokKodu ,Kategori,Marka,Magaza as 'Mağaza',Adet from LentiPlaza", baglanti);
                adap4.Fill(tablo4);
                dataGridView1.DataSource = tablo4;
                baglanti.Close();


            }
            
           
        }

        private void metroTextBox1_Click(object sender, EventArgs e)
        {
            metroButton1.Enabled = false;
            
        }

        private void metroComboBox1_MouseClick(object sender, MouseEventArgs e)
        {
            metroButton1.Enabled = true;
        }

        private void metroTextBox1_TextChanged(object sender, EventArgs e)
        {
            //Marka Arama Kutusu
            (dataGridView1.DataSource as DataTable).DefaultView.RowFilter =
   string.Format("StokKodu LIKE '{0}%' OR StokKodu LIKE '% {0}%'", metroTextBox1.Text);
            /////////////////////
        }

        private void metroButton1_Click(object sender, EventArgs e)
        {

            // creating Excel Application
            Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();


            // creating new WorkBook within Excel application
            Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);


            // creating new Excelsheet in workbook
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

            // see the excel sheet behind the program
            app.Visible = true;

            // get the reference of first sheet. By default its name is Sheet1.
            // store its reference to worksheet
            worksheet = workbook.Sheets["Sayfa1"];
            worksheet = workbook.ActiveSheet;

            // changing the name of active sheet
            worksheet.Name = "Exported from gridview";


            // storing header part in Excel
            for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
            {
                worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
            }

            // storing Each row and column value to excel sheet
            for (int i = 0; i < dataGridView1.Rows.Count - 0; i++)
            {
                for (int j = 0; j < dataGridView1.Columns.Count; j++)
                {
                    worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
                }
            }
        }

        private void metroButton2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void metroButton3_Click(object sender, EventArgs e)
        {
           
        }

        private void metroButton3_Click_1(object sender, EventArgs e)
        {
            SQLiteDataAdapter sda = new SQLiteDataAdapter("select * from LentiReal where ID = '"+metroTextBox1.Text+"'",baglanti);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            byte[] MyData = new byte[0];
            MyData = (byte[])dt.Rows[0][1];
            MemoryStream str = new MemoryStream(MyData);
            pictureBox1.Image = Image.FromStream(str);

        }
    }
}

解决方案

Hi AyhanB,

According to your description, you want to show images on datagridview for each row, I do one simple sample that you can refer to.

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        DataGridView1.RowTemplate.Height = 100
        DataGridView1.ColumnCount = 3
        DataGridView1.Columns(0).Name = "Product ID"
        DataGridView1.Columns(1).Name = "Product Name"
        DataGridView1.Columns(2).Name = "Product_Price"

        Dim row As String() = New String() {"1", "Product 1", "1000"}
        DataGridView1.Rows.Add(row)
        row = New String() {"2", "Product 2", "2000"}
        DataGridView1.Rows.Add(row)
        row = New String() {"3", "Product 3", "3000"}
        DataGridView1.Rows.Add(row)
        row = New String() {"4", "Product 4", "4000"}
        DataGridView1.Rows.Add(row)

        Dim img As New DataGridViewImageColumn()
        Dim inImg As Image = Image.FromFile("D:\Picture\1.png")
        img.Image = inImg
        DataGridView1.Columns.Add(img)
        img.HeaderText = "Image"
        img.Name = "img"

    End Sub

 

More other info, please refer to:

https://stackoverflow.com/questions/16564978/displaying-image-in-datagridviewimagecolumn-in-vb-net

http://www.vbforums.com/showthread.php?656013-Displaying-Image-in-DataGridView

Best Regards,

Cherry


这篇关于如何在datagridview上为每一行显示图像或以某种方式在datagridview上显示图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆