Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在数据绑定后更新以另一种形式存在的DataGridView的内容_C#_Winforms_Datagridview_Add In - Fatal编程技术网

C# 如何在数据绑定后更新以另一种形式存在的DataGridView的内容

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

我有WordAddin&它有n个表单。以下是两种形式

  • 任务窗格
  • 窗格玻璃
  • RibbonPane有一个按钮,我需要在DataGridView中添加停靠在TaskPane中包含的TabPane中的行

    但是datagrid视图(或文本框)中的数据设置为TaskPane构造函数中设置的值。当我的要求在RibbonPane中包含的按钮上时,我需要更新DataGridView的内容(即添加行)

    //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();
            }
     }