1. 程式人生 > >C# TableLayoutPanel 一個很實用的案例

C# TableLayoutPanel 一個很實用的案例

      在這裡主要講tableLayoutPanel的一個最重要的用法,先看效果


  這個看的有點不明白,我換個案例你就明白


直接上程式碼:

Form1裡拖個TableLayoutPanel,在TableLayoutPanel裡拖個Panel即可

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace CentralProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
      
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            // 繪製文字,居中顯示
            Graphics g = e.Graphics;
            Brush br = Brushes.Black; 
            SizeF sizeF = g.MeasureString(drawText, new Font("微軟雅黑", 10));
            
            g.DrawString(drawText, new Font("微軟雅黑", 10, FontStyle.Regular), new SolidBrush(Color.Black), new PointF((panel1.Width - sizeF.Width) / 2, (panel1.Height - sizeF.Height) / 2));
            g.Dispose();

        }

        string drawText = "雙擊選擇文字";

        private void panel1_Click(object sender, EventArgs e)
        {
            // panel單擊事件,變綠色
            panel1.BackColor = Color.Green;
        }

        private void panel1_DoubleClick(object sender, EventArgs e)
        {
            // 雙擊panel時,在panel裡新增一個comboBox控制元件,並且監聽SelectedIndexChanged事件 
            ComboBox cc = new ComboBox();
            cc.Font = new System.Drawing.Font("宋體",15);
            cc.Dock = DockStyle.Fill;
            cc.Items.AddRange(new string[]{"hello","world"});
            panel1.Controls.Add(cc);
            cc.SelectedIndexChanged += cc_SelectedIndexChanged;

        }

        void cc_SelectedIndexChanged(object sender, EventArgs e)
        {
            // 獲取文字,panel移除控制元件
            drawText = (sender as ComboBox).Text;
            panel1.Controls.Clear();
        }

     
        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}


其他問題:

   控制元件在TableLayoutPanel單元格的位置

   1 居中,設定控制元件Anchor為None

   2 其他位置,最好先添加個Panel,再在panel裡新增控制元件,再來設定控制元件的位置