2015-05-14 161 views
0

我有面板對象我的網頁上,我想與另一個小組面板控制不更新

//Info.panel[cb_page_number.SelectedIndex] = pnl_page_active; 
Panel new_panel = new Panel(); 
new_panel.BackColor = Color.White; 
//new_panel.Name ="page_"+ (cb_page_number.SelectedIndex+1).ToString(); 
//cb_page_number.Items.Add(new_panel.Name); 
//cb_page_number.SelectedIndex = cb_page_number.Items.Count-1; 
pnl_page_active = new_panel; 
pnl_page_active.Refresh(); 
pnl_page_active.Update(); 
Application.DoEvents(); 

pnl_page_active有象牙的背景顏色來代替它,並且對一些控制。當我執行上面的代碼,我expext看到pnl_page_active背景已經改變,並沒有控制,但它是一樣的,所以我想知道有什麼問題?

回答

2

您所做的只是將new_panel變量分配給pnl_page_active。它與控制層次無關。

您需要刪除舊的面板從它的父和插入新:

Control parent = pnl_page_active.Parent; 
if (parent != null) { 
    parent.Controls.Remove(pnl_page_active); 
    parent.Controls.Add(new_panel); 
} 
+0

MerC! Mehrzad! – Vahid2017

1

你當前做的是修改pnl_page_active引用同一個小組,new_panel是...但new_panel被從未添加到窗體中,所以你看不到顏色的變化。

刪除所有你上面貼的代碼,而只是改變BackColor直接:

pnl_page_active.BackColor = Color.White; 

如果要更換新的一個(無論何種原因)現有的面板中,你將不得不作出除了你正在複製的任何屬性之外,確保它具有相同的父級,大小,位置等。

Panel new_panel = new Panel(); 
new_panel.BackColor = Color.White; 
new_panel.Size = pnl_page_active.Size; 
new_panel.Location = pnl_page_active.Location; 
new_panel.Parent = pnl_page_active.Parent; 
new_panel.Show(); 

pnl_page_active.Hide(); // or Dispose if you don't want it anymore 
+1

謝謝!但正如你在代碼的第一行所看到的,我將pnl_page_active保存在一些靜態類中,因爲我希望將它返回到主表單,並且屬性不僅僅是大小,位置等等,它還有一些以編程方式更改的事件, – Vahid2017

+1

任何方式一起投贊成:) – Vahid2017

+0

謝謝。 :)很高興Mehrzad修復它給你。 –