1. Stellen Sie eine Schaltfläche so ein, dass sie im Panel zentriert wird
this.btnExit.Location = new System.Drawing.Point(pnlButton.Width / 2, pnlButton.Height / 2);
2. Sortieren Sie automatisch mehrere Schaltflächen im Panel
Ursprünglicher Zustand:
Code zum Anpassen der Reihenfolge:
/// <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; } }
Vorläufige Anpassung:
Beachten Sie, dass die Schaltflächenreihenfolge umgekehrt ist !
Wie erhält man also die richtige Tastenreihenfolge?
Der Code lautet wie folgt:
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 }
Der Effekt zu diesem Zeitpunkt ist wie folgt:
Erweiterung: Klicken Sie, um den Link zu öffnen
Das Obige ist der Inhalt der Winform-Panel-Schaltfläche. Für weitere verwandte Inhalte achten Sie bitte auf PHP-Chinesisch Website (m.sbmmt.com)!