昨天有個朋友問我,怎麼樣處理重疊的控件,讓指定的控件在最上面.我就很抓狂,很奇怪為什麼會有這種需求,但昨天上班忙,沒時間.今天早上來就寫了一段代碼試試,如下:
SetMeTop是設置最上的函數,button1_Click是一個測試方法,經測試,這樣是可行的.
為什麼要用一個ArrryList而不是直接用index來刪除呢,是因為刪除上層的一個控件後,會導致下面控件的index都加1,會產生一些異常.
這只是一時亂寫的函數.也許.Net本身直接有方法來設置,我卻不知道.呵呵..
歡迎指教:
[email protected] void SetMeTop(object obj)
{
//原理:先添加的控件會在最上面,即可見次序是由index決定的.
int index=this.Controls.GetChildIndex((Control)obj);//取得要置頂控件的index
ArrayList AL=new ArrayList();//用來裝入控件的容器
for(int i=0;i< index;i++)//把要置頂控件上面的控件都裝入容器
AL.Add(this.Controls[i]);
for(int i=0;i< AL.Count;i++)
{
//用一次刪除和一次添加操作,讓它上面的控件排到下面去.
this.Controls.Remove((Control)AL[i]);
this.Controls.Add((Control)AL[i]);
}
}
private void button1_Click(object sender, System.EventArgs e)
{
SetMeTop(sender);
}