1、Panel上設定某個按鈕置中
this.btnExit.Location = new System.Drawing.Point(pnlButton.Width / 2, pnlButton.Height / 2);
2、Panel上多個按鈕自動排序
原始狀態:
調整順序的代碼:
/// <summary> /// 設定按鈕顯示位置 /// </summary> /// <param name="targetPanel">要設定按鈕的Panel</param> /// <param name="buttonSpace">按鈕之間的間隔</param> public void SetButtonCenter(Panel targetPanel, int buttonSpace) { int length = 0; List<Button> listBtn = new List<Button>(); System.Windows.Forms.Control.ControlCollection c = targetPanel.Controls; foreach (Button btn in c) { listBtn.Add(btn); length += btn.Width + buttonSpace; } int pnlLength = targetPanel.Width; if (length > pnlLength) //本身按鈕的長度總和大於了panel的長度,不調整 return; int startPos = (pnlLength - length) / 2 - 10; //左縮排10個點位 int yPos = targetPanel.Height / 2; int xPos = startPos; foreach (Button btn in listBtn) { btn.Location = new System.Drawing.Point(xPos, yPos); xPos += btn.Width + buttonSpace; } }
初步調整後的樣子:
注意奧親,按鈕順序是反向的!
那麼怎麼讓按鈕順序正確呢?
代碼如下:
private void Form1_Load(object sender, EventArgs e) { SetButtonCenter(panelTest, 2); } /// <summary> /// 設定按鈕顯示位置 /// </summary> /// <param name="pnlButton">需要調整按鈕順序的Panel</param> /// <param name="buttonSpace">按鈕間隔</param> public void SetButtonCenter(Panel targetPanel,int buttonSpace) { int length = 0; List<Button> listBtn = new List<Button>(); System.Windows.Forms.Control.ControlCollection c = targetPanel.Controls; foreach (Button btn in c) { listBtn.Add(btn); length += btn.Width + buttonSpace; } int pnlLength = targetPanel.Width; if (length > pnlLength) //本身按鈕的長度總和大於了panel的長度,不調整 return; int startPos = (pnlLength - length) / 2 - 10; //左縮排10個點位 int yPos = targetPanel.Height / 2; int xPos = startPos; listBtn.Sort(new ButtonSort()); foreach (Button btn in listBtn) { btn.Location = new System.Drawing.Point(xPos, yPos); xPos += btn.Width + buttonSpace; } } public class ButtonSort : IComparer<Button> { #region IComparer<Button> Members //IComparer<T> 介面:定義類型為比較兩個對象而實現的方法。 public int Compare(Button x, Button y) { if (x.TabIndex >= y.TabIndex) return 1; else return -1; } #endregion }
此時的效果如:
拓展:點擊開啟連結
以上就是Winform Panel按鈕位置的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!