微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在datagridview中选择comboboxcolumn在另一个单元格中显示图像c#windows窗体

如何解决在datagridview中选择comboboxcolumn在另一个单元格中显示图像c#windows窗体

我已经使用 sql 数据库中的图像 ID 和图像名称加载了我的组合框。如果我们在组合框中选择任何图像名称,我想要它,具有该图像名称的图像将显示在另一个单元格中。下面的代码是我如何使用数据库中的数据加载我的 datagridview 组合框列。here is the table from the database 谁能帮助我? here is the columns in the datagridview

`

string constr = @"Data Source=DESKTOP-909N2K6\sqlEXPRESS;Initial Catalog=project1;Integrated Security=True";
            using (sqlConnection conn = new sqlConnection(constr))
            {
                using (sqlDataAdapter sda = new sqlDataAdapter("SELECT shapeID,shapeCode FROM shapeTable order by shapeCode asc ",conn))
                {
                    //Fill the DataTable with records from Table.
                    DataTable dt = new DataTable();
                    sda.Fill(dt);

                    //Insert the Default Item to DataTable.
                    DaTarow row = dt.NewRow();
                    dt.Rows.InsertAt(row,0);

                    //Assign DataTable as DataSource,Shape is the comboBoxcolumn name that i have add in the datagridview column.


                    this.Shape.displayMember = "shapeCode";
                    this.Shape.ValueMember = "shapeID";
                    this.Shape.DataSource = dt;
                }
            }

`

here is the ui

我已经尝试使用此代码,但我在要求组合框列选择值时遇到问题,并且代码不起作用。

编辑:我需要检索组合框列值的方法,现在我不知道用属于组合框列值的图像显示图像列的正确方法

void dataGridView1_CurrentCellDirtyStateChanged(object sender,EventArgs e)
    {
        if (dataGridView1.IsCurrentCellDirty)
        {
            // This fires the cell value changed handler below
            dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
        }
    }

    private void dataGridView1_CellValueChanged(object sender,DataGridViewCellEventArgs e)
    {
        
        DataGridViewComboBoxCell Shape = (DataGridViewComboBoxCell)dataGridView1.Rows[e.RowIndex].Cells[10];
        if (Shape.Value != null)
        {
            // the code to display image based on the value retrieve from the comboBox column
            dataGridView1.Invalidate();
        }
    }

解决方法

好的,我已经得到了答案。 here are the example of ui

void dataGridView1_CurrentCellDirtyStateChanged(object sender,EventArgs e)
        {
            if (dataGridView1.IsCurrentCellDirty)
            {
                // This fires the cell value changed handler below
                dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
        }
    private void dataGridView1_CellValueChanged(object sender,DataGridViewCellEventArgs e)
    {
        DataGridViewComboBoxCell Shape = (DataGridViewComboBoxCell)dataGridView1.Rows[e.RowIndex].Cells[10]; //retrieve the datagridview combobox column value
        if (e.ColumnIndex == Shape.ColumnIndex) // this the code where i use to display the image in the datagridviewimage column
                {
                    using (SqlConnection conn = new SqlConnection(ConnectionString))
                    {
                            using (SqlCommand cmmd = new SqlCommand("SELECT shapeImage FROM shapeTable WHERE shapeCode = @shapeCode",conn))
                            {
                                try
                                {
                                   
                                        cmmd.Parameters.AddWithValue("@shapeCode",Shape.Value);
                                        conn.Open();
                                        byte[] bytes = (byte[])cmmd.ExecuteScalar();
                                        conn.Close();
                                        Image img = byteArrayToImage(bytes);                                   
                                        DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
                                        row.Cells[11].Value = img;
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show("Error\n" + ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
                                }
                            }
                            dataGridView1.Invalidate();  
                    }
                }
    }

    public Image byteArrayToImage(byte[] byteArrayIn)
    {
        MemoryStream ms = new MemoryStream(byteArrayIn);
        Image returnImage = Image.FromStream(ms);
        return returnImage;
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?