[C#] 實作表格佈局 - TableLayoutPanel

閱讀時間約 6 分鐘
raw-image

當你需要在 C# Windows Forms 應用程式中以表格形式排列子控制項時,TableLayoutPanel 是一個非常有用的容器控制項。TableLayoutPanel 允許你將子控制項放入行和列的格子中,並且可以輕鬆地調整格子的大小和配置。在本節中,我們將介紹 TableLayoutPanel 的基本概念並實作一個簡單的範例。

介紹 TableLayoutPanel

TableLayoutPanel 是一個容器控制項,類似於表格。它允許你在行和列中放置子控制項,並且可以設定每個格子的大小和排列。主要的屬性包括:

  • RowCount:指定表格的行數。
  • ColumnCount:指定表格的列數。
  • RowStyles:用於設定每一行的大小和佈局方式。
  • ColumnStyles:用於設定每一列的大小和佈局方式。
  • Controls.Add:用於將子控制項添加到指定的行和列中。

實作 TableLayoutPanel 範例

現在,讓我們實作一個簡單的範例,展示如何使用 TableLayoutPanel 在 C# 中實現表格佈局。

MainForm 類別的建構函式中,加入程式碼以動態生成 TableLayoutPanel 和子控制項。

csharpCopy code
using System;
using System.Windows.Forms;

namespace TableLayoutPanelDemo
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
CreateTableLayout();
}

private void CreateTableLayout()
{
// 建立 TableLayoutPanel 控制項
TableLayoutPanel tableLayoutPanel1 = new TableLayoutPanel();
tableLayoutPanel1.RowCount = 2; // 表格有兩行
tableLayoutPanel1.ColumnCount = 3; // 表格有三列
tableLayoutPanel1.Dock = DockStyle.Fill; // 佔滿整個視窗

// 設定行和列的大小和佈局方式
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33F));
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33F));
tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33F));

// 建立按鈕控制項並將其添加到 TableLayoutPanel 中的指定行和列
Button button1 = new Button();
button1.Text = "按鈕1";
tableLayoutPanel1.Controls.Add(button1, 0, 0); // 放入第一行第一列

Button button2 = new Button();
button2.Text = "按鈕2";
tableLayoutPanel1.Controls.Add(button2, 1, 0); // 放入第一行第二列

Button button3 = new Button();
button3.Text = "按鈕3";
tableLayoutPanel1.Controls.Add(button3, 2, 0); // 放入第一行第三列

Button button4 = new Button();
button4.Text = "按鈕4";
tableLayoutPanel1.Controls.Add(button4, 0, 1); // 放入第二行第一列

Button button5 = new Button();
button5.Text = "按鈕5";
tableLayoutPanel1.Controls.Add(button5, 1, 1); // 放入第二行第二列

Button button6 = new Button();
button6.Text = "按鈕6";
tableLayoutPanel1.Controls.Add(button6, 2, 1); // 放入第二行第三列

// 將 TableLayoutPanel 加入到主視窗
this.Controls.Add(tableLayoutPanel1);
}
}
}

執行程式,你將看到動態生成的 TableLayoutPanel 和按鈕,並且它們以表格形式排列在視窗中。你可以根據需要設定不同的行數、列數和子控制項的位置,以達到你想要的佈局效果。

使用 TableLayoutPanel 可以讓你更方便地管理控制項的佈局,特別是當你需要在表格中排列大量控制項時,這個功能將非常實用。

avatar-img
67會員
120內容數
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
程式輕鬆玩 的其他內容
在開發 C# Windows Forms 應用程式時,我們經常需要將多個控制項以流式佈局排列,以便在不同大小的視窗或面板中適應佈局變化。這時,FlowLayoutPanel 是一個非常實用的容器控制項,它可以自動調整子控制項的位置,使其按照流式佈局排列。
在這篇教學中,我們將學習如何在C#程式中取得系統時間並進行格式化,以滿足不同需求的日期和時間顯示。
在專案中,使用NuGet套件管理員來安裝Microsoft.Office.Interop.Excel套件。這個套件將幫助我們與Excel進行互動。
在這篇教學中,我們將學習如何在C#程式碼中使用字串插值來加入變數。字串插值是一種方便且易讀的方式,讓我們可以將變數值插入到字串中,而不必使用傳統的串接方法。現在,讓我們開始吧! 在這個範例中,我們將創建一個簡單的應用程式,使用字串插值在螢幕上顯示一條個人訊息。這個訊息包含姓名、年齡和城市。 us
在現代科技的快速發展下,AI繪圖工具已成為許多創作者的得力助手。我有幸使用這些工具,並深感它們對創作過程的影響。
在現代科技快速發展的時代,學習程式設計已經成為一項重要的技能。無論年齡如何,程式設計都可以為人們帶來許多價值和益處。從幼童到老年人,學習程式設計不僅能夠培養邏輯思維,還能提升解決問題的能力和創造力。讓我們一起探討在各個年齡層中學習程式設計的重要性,並看看它如何在不同階段深化思維和進行系統化整理。
在開發 C# Windows Forms 應用程式時,我們經常需要將多個控制項以流式佈局排列,以便在不同大小的視窗或面板中適應佈局變化。這時,FlowLayoutPanel 是一個非常實用的容器控制項,它可以自動調整子控制項的位置,使其按照流式佈局排列。
在這篇教學中,我們將學習如何在C#程式中取得系統時間並進行格式化,以滿足不同需求的日期和時間顯示。
在專案中,使用NuGet套件管理員來安裝Microsoft.Office.Interop.Excel套件。這個套件將幫助我們與Excel進行互動。
在這篇教學中,我們將學習如何在C#程式碼中使用字串插值來加入變數。字串插值是一種方便且易讀的方式,讓我們可以將變數值插入到字串中,而不必使用傳統的串接方法。現在,讓我們開始吧! 在這個範例中,我們將創建一個簡單的應用程式,使用字串插值在螢幕上顯示一條個人訊息。這個訊息包含姓名、年齡和城市。 us
在現代科技的快速發展下,AI繪圖工具已成為許多創作者的得力助手。我有幸使用這些工具,並深感它們對創作過程的影響。
在現代科技快速發展的時代,學習程式設計已經成為一項重要的技能。無論年齡如何,程式設計都可以為人們帶來許多價值和益處。從幼童到老年人,學習程式設計不僅能夠培養邏輯思維,還能提升解決問題的能力和創造力。讓我們一起探討在各個年齡層中學習程式設計的重要性,並看看它如何在不同階段深化思維和進行系統化整理。
你可能也想看
Google News 追蹤
Thumbnail
表格可調整欄位,這是很常用到的功能,先看結果如下: 我用了一個DIV包在TABLE之外,所以這個DIV的CSS也會影響TABLE寬度, 以下是程式碼: <!DOCTYPE html> <html lang="zh-TW"> <head> <meta charset="UTF-8">
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節旨在介紹 C# 中函數的基本結構,包括訪問修飾符、返回類型、方法名稱、參數列表和方法體。同時,也介紹了函數的各種呼叫方式、參數傳遞方式和返回值類型。讀者可以通過本章節,深入理解 C# 中函數的使用和應用。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
Thumbnail
本篇主要是設計,當【沒有任何數值】與【原本就有數值】這兩種情況結合在一起時的 VBA 解決方案。分享內容包括張忍大師的函數解決方法。文章中包含影片檔案下載以及參考文獻連結。
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
表格可調整欄位,這是很常用到的功能,先看結果如下: 我用了一個DIV包在TABLE之外,所以這個DIV的CSS也會影響TABLE寬度, 以下是程式碼: <!DOCTYPE html> <html lang="zh-TW"> <head> <meta charset="UTF-8">
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節旨在介紹 C# 中函數的基本結構,包括訪問修飾符、返回類型、方法名稱、參數列表和方法體。同時,也介紹了函數的各種呼叫方式、參數傳遞方式和返回值類型。讀者可以通過本章節,深入理解 C# 中函數的使用和應用。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
Thumbnail
本篇主要是設計,當【沒有任何數值】與【原本就有數值】這兩種情況結合在一起時的 VBA 解決方案。分享內容包括張忍大師的函數解決方法。文章中包含影片檔案下載以及參考文獻連結。
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val