vocus logo

方格子 vocus

🧩 C# WinForms FlowLayoutPanel 教學:打造自動排版 UI

更新 發佈閱讀 6 分鐘

在開發 C# Windows Forms 應用程式時,如果你需要讓控制項「自動排列、隨視窗大小調整」,那 FlowLayoutPanel 會是非常好用的工具。

它可以幫你做到:

👉 自動排列控制項

👉 視窗縮放時自動換行 👉 超出範圍自動出現捲軸

這篇就帶你快速上手 FlowLayoutPanel 的核心用法!


🧩 什麼是 FlowLayoutPanel?

FlowLayoutPanel 是一種「流式佈局容器」,裡面的控制項會像文字一樣:

👉 由左到右排列

👉 空間不夠就自動換行

非常適合用在:

  • 動態按鈕列表
  • 卡片式 UI
  • 工具列 / 快捷功能區

🚀 Step 1:建立 FlowLayoutPanel

private FlowLayoutPanel flowLayoutPanel1;private void MainForm_Load(object sender, EventArgs e){    flowLayoutPanel1 = new FlowLayoutPanel();    flowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight;    flowLayoutPanel1.WrapContents = true;    flowLayoutPanel1.AutoScroll = true;    flowLayoutPanel1.Dock = DockStyle.Fill;    this.Controls.Add(flowLayoutPanel1);}

🔍 重要屬性說明

🔹 FlowDirection(排列方向)

flowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight;

可選:

  • LeftToRight
  • TopDown
  • RightToLeft
  • BottomUp

🔹 WrapContents(是否換行)

flowLayoutPanel1.WrapContents = true;

true:空間不夠會自動換行

false:會一直延伸(可能超出畫面)


🔹 AutoScroll(自動捲軸)

flowLayoutPanel1.AutoScroll = true;

👉 當內容超出範圍時,自動出現捲動條


🔹 Dock(填滿容器)

flowLayoutPanel1.Dock = DockStyle.Fill;

👉 讓 Panel 填滿整個視窗


🚀 Step 2:動態加入控制項

private void CreateControls(){    for (int i = 1; i <= 3; i++)    {        Button btn = new Button();        btn.Text = $"按鈕{i}";        btn.Size = new System.Drawing.Size(100, 30);        btn.Click += button_Click;        flowLayoutPanel1.Controls.Add(btn);    }}

🖱️ Step 3:事件處理

private void button_Click(object sender, EventArgs e){    Button btn = (Button)sender;    MessageBox.Show($"你按下了:{btn.Text}");}

⚠️ 原始範例常見問題(幫你補強)

你的原始寫法有一個關鍵問題👇

👉 flowLayoutPanel1 沒有宣告成成員變數

👉 在不同方法中會抓不到

✔ 正確做法:

private FlowLayoutPanel flowLayoutPanel1;

🧠 實務技巧(很重要)

🔹 控制項間距

btn.Margin = new Padding(5);

👉 讓 UI 不會擠在一起


🔹 控制項自動大小

btn.AutoSize = true;

🔹 固定每行數量(進階)

可以搭配 Panel 寬度控制,或改用:

👉 TableLayoutPanel(如果需要更精準格狀排版)


🚀 延伸應用(你可以這樣用)

FlowLayoutPanel 很適合拿來做:

  • 🔹 快捷工具列(像你現在做的工具)
  • 🔹 動態產生按鈕(例如分類、標籤)
  • 🔹 檔案列表 UI
  • 🔹 卡片式介面

✨ 結語

FlowLayoutPanel 的核心價值就是:

✔ 自動排版

✔ 減少手動計算座標 ✔ UI 更有彈性

如果你正在做 WinForms 工具(像你現在的專案),這個控制項其實非常實用 👍

留言
avatar-img
程式輕鬆玩
81會員
202內容數
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
程式輕鬆玩的其他內容
2025/04/20
本週科技圈掀起多項重磅消息:OpenAI於4月14日釋出GPT‑4.1系列模型,進一步強化編碼與長文理解能力 Reuters;Chipolo推出POP藍牙追蹤器,同時支援Apple與Google尋找網路 The Verge;南韓新創RLWRLD完成1,480萬美元募資,將打造專屬機器人基礎模型
Thumbnail
2025/04/20
本週科技圈掀起多項重磅消息:OpenAI於4月14日釋出GPT‑4.1系列模型,進一步強化編碼與長文理解能力 Reuters;Chipolo推出POP藍牙追蹤器,同時支援Apple與Google尋找網路 The Verge;南韓新創RLWRLD完成1,480萬美元募資,將打造專屬機器人基礎模型
Thumbnail
2025/04/20
本週遊戲動態涵蓋經典 25 週年重返 PC 平台、回合制策略新作重燃星戰熱潮、Remedy 荒誕合擊新作搶先曝光、Game Pass 下架名單震撼登場,以及 Steam 獨立新秀推薦不容錯過 PC GamerWindows Central。
Thumbnail
2025/04/20
本週遊戲動態涵蓋經典 25 週年重返 PC 平台、回合制策略新作重燃星戰熱潮、Remedy 荒誕合擊新作搶先曝光、Game Pass 下架名單震撼登場,以及 Steam 獨立新秀推薦不容錯過 PC GamerWindows Central。
Thumbnail
2025/04/08
近來因為川普政府啟動全新一輪對等關稅政策,全球貿易風暴席捲而來,而台灣面臨的衝擊更是不容小覷。美方以台灣過去對美出口關稅達64%為依據,採取「對等關稅」原則回敬徵收32%關稅,這一舉措不僅使得國際市場恐慌連連,台股也出現劇烈下跌,吸引了各界關注。
Thumbnail
2025/04/08
近來因為川普政府啟動全新一輪對等關稅政策,全球貿易風暴席捲而來,而台灣面臨的衝擊更是不容小覷。美方以台灣過去對美出口關稅達64%為依據,採取「對等關稅」原則回敬徵收32%關稅,這一舉措不僅使得國際市場恐慌連連,台股也出現劇烈下跌,吸引了各界關注。
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
在這個教學中,我們將使用 C# 和 WinForms 來建立一個基本的行事曆應用。我們將使用 MonthCalendar 控制元件,這是一個方便的工具,可用於顯示和選擇日期。這篇文章介紹瞭如何建立基本的行事曆應用,以及如何設定事件處理和添加自定義功能。
Thumbnail
在這個教學中,我們將使用 C# 和 WinForms 來建立一個基本的行事曆應用。我們將使用 MonthCalendar 控制元件,這是一個方便的工具,可用於顯示和選擇日期。這篇文章介紹瞭如何建立基本的行事曆應用,以及如何設定事件處理和添加自定義功能。
Thumbnail
在 C# 的視窗應用程式開發中,有時候我們需要在子視窗中取得父視窗的參考,以實現不同視窗之間的資訊交換或操作。這篇教學將會示範如何使用 Owner 屬性來在子視窗中取得父視窗的參考,以及如何進行相關操作。
Thumbnail
在 C# 的視窗應用程式開發中,有時候我們需要在子視窗中取得父視窗的參考,以實現不同視窗之間的資訊交換或操作。這篇教學將會示範如何使用 Owner 屬性來在子視窗中取得父視窗的參考,以及如何進行相關操作。
Thumbnail
當你需要在 C# Windows Forms 應用程式中以表格形式排列子控制項時,TableLayoutPanel 是一個非常有用的容器控制項。TableLayoutPanel 允許你將子控制項放入行和列的格子中,並且可以輕鬆地調整格子的大小和配置。
Thumbnail
當你需要在 C# Windows Forms 應用程式中以表格形式排列子控制項時,TableLayoutPanel 是一個非常有用的容器控制項。TableLayoutPanel 允許你將子控制項放入行和列的格子中,並且可以輕鬆地調整格子的大小和配置。
Thumbnail
在開發 C# Windows Forms 應用程式時,如果你需要讓控制項「自動排列、隨視窗大小調整」,那 FlowLayoutPanel 會是非常好用的工具。 它可以幫你做到: 👉 自動排列控制項 👉 視窗縮放時自動換行 👉 超出範圍自動出現捲軸
Thumbnail
在開發 C# Windows Forms 應用程式時,如果你需要讓控制項「自動排列、隨視窗大小調整」,那 FlowLayoutPanel 會是非常好用的工具。 它可以幫你做到: 👉 自動排列控制項 👉 視窗縮放時自動換行 👉 超出範圍自動出現捲軸
Thumbnail
前言   這篇文章將會介紹 UI 排版的實用工具。 GridLayoutGroup | 網格排版工具   這是我在撰寫遊戲 UI 時很常使用的 Component 今天在思考新的文章要寫什麼時發現還沒寫過,因此來跟大家介紹這時用的小組件。 運作原理   本質上來說,這個組件會控制他所有的子物件,並且
Thumbnail
前言   這篇文章將會介紹 UI 排版的實用工具。 GridLayoutGroup | 網格排版工具   這是我在撰寫遊戲 UI 時很常使用的 Component 今天在思考新的文章要寫什麼時發現還沒寫過,因此來跟大家介紹這時用的小組件。 運作原理   本質上來說,這個組件會控制他所有的子物件,並且
Thumbnail
繼上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
Thumbnail
繼上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
Thumbnail
Flexbox長於小規模佈局,而Grid layout則適於大規模佈局。 Flexbox是單向度的排版,Grid則是包含X軸和Y軸的平面排版方式。 如果你想要簡單輕便的實現單一軸向的自適應式排版,例如導覽列、卡片式排版、相簿等,可以選擇使用Flexbox。如果你想快速實現雙軸平面式,甚至不規則的排版
Thumbnail
Flexbox長於小規模佈局,而Grid layout則適於大規模佈局。 Flexbox是單向度的排版,Grid則是包含X軸和Y軸的平面排版方式。 如果你想要簡單輕便的實現單一軸向的自適應式排版,例如導覽列、卡片式排版、相簿等,可以選擇使用Flexbox。如果你想快速實現雙軸平面式,甚至不規則的排版
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News