【问题标题】:The Image in the picture box does not change图片框中的图像没有变化
【发布时间】:2015-03-28 20:23:03
【问题描述】:

我在这里需要帮助。我正在使用来自 gridview 的数据来填充文本框和图片框。当我点击一行时,文本框填满就好了。但是图片框只显示了一张图片。无论我选择哪一行,都会显示相同的图像。请我是 c# 新手,我需要帮助。这是我到目前为止所做的 私人无效viewMemberGrid_CellClick(对象发送者,DataGridViewCellEventArgs e) {

        DataGridViewRow dr = viewMemberGrid.SelectedRows[0];
        GmemIDBox.Text = dr.Cells[0].Value.ToString();

        GsurnameBox.Text = dr.Cells[1].Value.ToString();
        GfirstnameBox.Text = dr.Cells[2].Value.ToString();
        GphoneBox.Text = dr.Cells[3].Value.ToString();
        memDeptBox.Text = dr.Cells[7].Value.ToString();
        memPortBox.Text = dr.Cells[8].Value.ToString();
        GaddBox.Text = dr.Cells[5].Value.ToString();
        GdobBox.Text = dr.Cells[6].Value.ToString();

        string select = "Select NEWMEMBER.MemberID, Surname, Firstname, PhoneNumber, MemberPic, HomeAddress,DOB,DeptID,PortfolioDesc from NEWMEMBER inner join Pictures on NEWMEMBER.MemberID = Pictures.MemberID join PortfolioDescription on PortfolioDescription.PortfolioId = NEWMEMBER.PortfolioID";
        SqlConnection c = new SqlConnection("Data Source=.;Initial Catalog=Cmanager;Integrated Security=True");
        SqlCommand cmd = new SqlCommand(select, c);

        try
        {
            c.Open();
            SqlDataReader dro = cmd.ExecuteReader();

            if (dro.Read())
            {
                byte[] picarr = (byte[])dro["MemberPic"];
                MemoryStream ms = new MemoryStream(picarr);
                ms.Seek(0, SeekOrigin.Begin);
                memPicBox.Image = Image.FromStream(ms);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

        c.Close();

    } 

【问题讨论】:

  • 我怀疑你的选择声明
  • 您需要在 select 语句中使用 where 子句。
  • 你们俩都说得对。谢谢你们俩

标签: c# winforms datagridview picturebox


【解决方案1】:

对您的 select 语句进行一些更改

;

我不知道你在数据库中的 MemberID 列是 Number 还是 Varchar

.

;

如果是数字

string select = "Select NEWMEMBER.MemberID, Surname, Firstname, PhoneNumber, MemberPic, HomeAddress,DOB,DeptID,PortfolioDesc from NEWMEMBER inner join Pictures on NEWMEMBER.MemberID = Pictures.MemberID join PortfolioDescription on PortfolioDescription.PortfolioId = NEWMEMBER.PortfolioID Where NEWMEMBER.MemberID = " + dr.Cells[0].Value.ToString();

或者如果它是 Varchar

string select = "Select NEWMEMBER.MemberID, Surname, Firstname, PhoneNumber, MemberPic, HomeAddress,DOB,DeptID,PortfolioDesc from NEWMEMBER inner join Pictures on NEWMEMBER.MemberID = Pictures.MemberID join PortfolioDescription on PortfolioDescription.PortfolioId = NEWMEMBER.PortfolioID Where NEWMEMBER.MemberID = '" + dr.Cells[0].Value.ToString() + "'";        

【讨论】:

  • 你也忘记了结束分号。 :D 但我认为没有必要。
  • 在哪里..?他说他是初学者,所以我尽量简短
  • @Sayka 我的意思是像+ dr.Cells[0].Value.ToString() + ";";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多