C# 同时刷新datagridview和图片框中的数据#

C# 同时刷新datagridview和图片框中的数据#,c#,winforms,datagridview,refresh,picturebox,C#,Winforms,Datagridview,Refresh,Picturebox,快速提问 在我的主窗体上是使用tableadapter填充的datagridview。在我的form2上,它将数据(包括作为二进制数据存储的图片)插入datagridview绑定到的数据库表中 在主窗体上有一个刷新按钮,它将重新填充datagridview。这就是我的问题开始的地方。我有一个图片框,当我选择一行时,它将显示数据库中存储的该条目的照片。但是,我通过设计师使用以下方式绑定了图片框: this.selectedFirearmPictureBox.DataBindings.Add(ne

快速提问

在我的主窗体上是使用tableadapter填充的datagridview。在我的form2上,它将数据(包括作为二进制数据存储的图片)插入datagridview绑定到的数据库表中

在主窗体上有一个刷新按钮,它将重新填充datagridview。这就是我的问题开始的地方。我有一个图片框,当我选择一行时,它将显示数据库中存储的该条目的照片。但是,我通过设计师使用以下方式绑定了图片框:

 this.selectedFirearmPictureBox.DataBindings.Add(new System.Windows.Forms.Binding("image", this.firearmsTableBindingSource, "image", true));

当我刷新数据时,一切正常,但当我选择其他行时,图片框不再更新。如果我关闭应用程序并再次运行调试器,它将正常工作。可能是我需要刷新绑定源吗?

您的picturebox绑定到整个bindingsource,而不是一个项目,您需要调整bindingsource位置,以便picturebox可以更新,如下所示(这是一种方法):


当您选择带有标题的行时,将触发
RowHeaderMouseClick
事件,这将解决您的问题。

当您在网格中选择行时,请尝试设置bindingsource的位置。我已经看了一两分钟了。你能详细说明一下或者提供一个简单的例子吗?好了,请检查一下答案,看看它是否对你有帮助。我相信它朝着正确的方向发展。但是,当我删除将图片框绑定到整个源代码的数据绑定并放入上面的代码中时,什么也没有发生。如果不删除绑定,只需添加RowHeaderMouse的事件处理程序单击并将此代码放在那里,将picturebox绑定保留在那里。我提出的解决方案不是用此处理程序替换picturebox绑定,保留picturebox绑定并添加此代码是很重要的。我爱你。工作得很有魅力!答案可能很简单,但对于C#的新手来说,尝试学习这一点真是太棒了。标记为答案的。
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    firearmsTableBindingSource.Position = e.RowIndex;
}