用户控件内的刷新/更新控件

时间:2014-07-28 18:38:18

标签: c# winforms

我的表单中包含TabControl动态TabPages。每个页面都使用循环添加了usercontrol。这是我在每个页面中添加usercontrol的方式。

for (var i = 0; i < tbl.Rows.Count; i++)
{
    uctrTab = new XtraTabPagesUserCtrl();
    xtab.TabPages[i].Text = "Table " + (i+1);
    uctrTab.LayoutClicked += new MouseEventHandler(Layout_Click);
    xtab.TabPages[i].Controls.Add(uctrTab);
    xtab.TabPages[i].PageVisible = !xtab.TabPages[i].PageVisible;
}

我制作的用户控件中有一个DataGridView,所以我想刷新它的内容,但我不知道怎么做而不删除并重新读取控件。

现在我的解决方案是

 xtab.SelectedTabPage.Controls.Clear();
 uctrTab = new XtraTabPagesUserCtrl();
 uctrTab.LayoutClicked += new MouseEventHandler(Layout_Click);
 xtab.SelectedTabPage.Controls.Add(uctrTab);

有没有更好的方法来刷新内容而不必这样做?

1 个答案:

答案 0 :(得分:1)

我将在这里写下我的答案(我在评论部分做了,因为问题已被搁置)。

我的建议..首先在你的用户控件中实现一个方法,比如..

public void RefreshGrid()
{
    refresh datagridview data here
}

其次,迭代所选标签页的控件并查找你的用户控件......就像这样......

foreach(Control ctrl in selectedTabPage.Controls)
{ 
    if(ctrl is XtraTabPagesUserCtrl)
    { 
        ((XtraTabPagesUserCtrl)ctrl).RefreshGrid(); 
    } 
}