之前做DEV界面的時候,用到一個下拉按鈕-dropDownButton,它的屬性DropDownControl設置了一個PopupMenu。
當我動態的更新PopupMenu的LinksPersistInfo裏面的值的時候,我發現代碼裏調適,PopupMenu的子級是最新狀態,但是界面上dropDownButton下拉還是原始界面初始的子級。我想了各種辦法,this.dropDownButton1.Refresh();重新給屬性DropDownControl賦值等等,都沒有用。
後來想到DEV的一個公用管理barManager控件。於是我在動態更新PopupMenu的LinksPersistInfo的明細的時候,在外層包裹如下代碼:
this.PopupMenu.LinksPersistInfo.Clear();
this.barManager.BeginInit();
try
{
foreach (DataRow _Dr in this.m_Dt.Rows)
{
DevExpress.XtraBars.BarButtonItem _ToolStripMenuItem = new DevExpress.XtraBars.BarButtonItem();
_ToolStripMenuItem.Tag = _Dt[0].ToString();
_ToolStripMenuItem.Caption = _Dt[1].ToString();
_ToolStripMenuItem.Name = _Dt[2].ToString();
_ToolStripMenuItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(事件);
this.PopupMenu.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(_ToolStripMenuItem));
}
}
finally
{
this.barManager.EndInit();
}
實際就是告訴barManager我要開始繪製,然後完成動態改變之後在告訴它我繪製完成。