C# 如何在数据绑定后更新以另一种形式存在的DataGridView的内容
我有WordAddin&它有n个表单。以下是两种形式C# 如何在数据绑定后更新以另一种形式存在的DataGridView的内容,c#,winforms,datagridview,add-in,C#,Winforms,Datagridview,Add In,我有WordAddin&它有n个表单。以下是两种形式 任务窗格 窗格玻璃 RibbonPane有一个按钮,我需要在DataGridView中添加停靠在TaskPane中包含的TabPane中的行 但是datagrid视图(或文本框)中的数据设置为TaskPane构造函数中设置的值。当我的要求在RibbonPane中包含的按钮上时,我需要更新DataGridView的内容(即添加行) //Ribbon.cs public void btnSubmitClick(对象发送方,事件参数e) { var
//Ribbon.cs
public void btnSubmitClick(对象发送方,事件参数e)
{
var obj=新任务窗格();
obj.AddRowsToDGV(新列表()
{
新元组(“谷歌”、“首席执行官”);
});
};
//TaskPane.cs
公共任务窗格()
{
//下面反映了用户界面中的情况
dEntitiesforReview.Rows.Add(“Static”、“ForTesting”);
}
public AddRowsToDGV(列表实体=null)
{
//dEntitiesForReview-DataGridView停靠在TabPage/TabControl内
if(实体!=null)
{
foreach(实体中的var实体)
{
dgventies.Rows.Add(entity.Item1,entity.Item2);
}
dEntities for Review.ClearSelection();
dgEntitiesForReview.Refresh();
}
}
如果我添加一个quickwatch DGEntities for Review.Rows.Count的监视,它会被更新,但不会反映在UI中
请注意,我选中了一个简单的文本框来代替DataGridView,但问题相同。文本在调试时得到更新,但没有反映在UI中
谢谢 在AddRowsToDGV方法中的foreach循环中,是否使用了正确的gridview?您正在将行添加到dVentities并检查dEntities for Review上的行数:在
功能区的btnSubmitClick()
类中,您拥有var obj=new TaskPane()代码>这是一个新的任务窗格,不是当前加载和显示的任务窗格。您不能使用此实例,它与现有实例完全无关。您需要将TaskPane的当前实例传递给Ribbon类,并使用此现有实例更新当前TaskPane表单如果DGV绑定到数据源,则需要将数据添加到数据源,而不是控件。使用BindingSource。@Jimi但是如何?是什么控制这些表单的创建?创建表单时是否可以存储表单的引用?你能用吗?首先创建哪个功能区或任务窗格?这些形式之间有什么关系?选择的方法取决于应用程序的结构。
//Ribbon.cs
public void btnSubmitClick(object sender, EventArgs e)
{
var obj = new TaskPane();
obj.AddRowsToDGV(new List<Tuple<string, string>>()
{
new Tuple<string,string>("Google","CEO");
});
};
//TaskPane.cs
public TaskPane()
{
//below reflects in UI
dgEntitiesForReview.Rows.Add("Static","ForTesting");
}
public AddRowsToDGV(List<Tuple<string, string>> entities =null)
{
//dgEntitiesForReview - DataGridView docked inside TabPage/TabControl
if (entities!= null)
{
foreach (var entity in entities)
{
dgvEntities.Rows.Add(entity.Item1, entity.Item2);
}
dgEntitiesForReview.ClearSelection();
dgEntitiesForReview.Refresh();
}
}