我的表单中包含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);
有没有更好的方法来刷新内容而不必这样做?
答案 0 :(得分:1)
我将在这里写下我的答案(我在评论部分做了,因为问题已被搁置)。
我的建议..首先在你的用户控件中实现一个方法,比如..
public void RefreshGrid()
{
refresh datagridview data here
}
其次,迭代所选标签页的控件并查找你的用户控件......就像这样......
foreach(Control ctrl in selectedTabPage.Controls)
{
if(ctrl is XtraTabPagesUserCtrl)
{
((XtraTabPagesUserCtrl)ctrl).RefreshGrid();
}
}