【20090312-03】TableLayoutPanel 控件
2009-03-12 12:04
441 查看
TableLayoutPanel 类
注意:此类在 .NET Framework 2.0 版中是新增的。
表示一个面板,它可以在一个由行和列组成的网格中对其内容进行动态布局。
命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)
Code
public partial class tableLayoutPanelForm : Form
{
public tableLayoutPanelForm()
{
InitializeComponent();
}
private void tableLayoutPanelForm_Load(object sender, EventArgs e)
{
this.panel1.AutoScroll = true;
this.panel1.BorderStyle = BorderStyle.FixedSingle;
TableLayoutPanel tabPanel = new TableLayoutPanel();
tabPanel.ColumnCount = 2;
this.panel1.Controls.Add(tabPanel);
}
int iClickedTimes = 0;
//每点击一次 新增如下结构
//btn1 btn2
// btn3
//btn1跨两行
private void button1_Click(object sender, EventArgs e)
{
TableLayoutPanel tabPanel = (TableLayoutPanel)(this.panel1.Controls[0]);
tabPanel.RowCount = (iClickedTimes + 1) * 2; //再增两行
//增加button1
Button btn1 = new Button();
btn1.Name = "button" + (iClickedTimes * 3 + 1).ToString();
btn1.Text = "buttonText"+ (iClickedTimes*3+1).ToString();
btn1.Height = btn1.Height * 3;
btn1.Click += new EventHandler(btn1Click);//事件
tabPanel.Controls.Add(btn1, 0, iClickedTimes*2);
tabPanel.SetRowSpan(btn1, 2);//跨两行
//增加button2
Button btn2 = new Button();
btn2.Name = "button" + (iClickedTimes * 3 + 2).ToString();
btn2.Text = "buttonText" + (iClickedTimes * 3 + 2).ToString();
btn2.Click += new EventHandler(btn2Click);
tabPanel.Controls.Add(btn2, 1, iClickedTimes * 2);
//增加button3
Button btn3 = new Button();
btn3.Name = "button" + (iClickedTimes * 3 + 3).ToString();
btn3.Text = "buttonText" + (iClickedTimes * 3 + 3).ToString();
btn3.Click += new EventHandler(btn3Click);
tabPanel.Controls.Add(btn3, 1, iClickedTimes * 2 + 1);
tabPanel.Size=new Size(200, (iClickedTimes + 1) * 2 * 50);
iClickedTimes++;
}
//自身的Name
private void btn1Click(object sender, EventArgs e)
{
Button btn1 = (Button)sender;
MessageBox.Show(btn1.Name);
}
//通过命名规则 得到其对应btn1的Text
private void btn2Click(object sender, EventArgs e)
{
Button btn2 = (Button)sender;
string btn2ID = btn2.Name.Substring(6);//去掉Name中的button
//其对应btn1的Name为
string btn1Name = "button" + Convert.ToString((Convert.ToInt32(btn2ID) - 1));
//
TableLayoutPanel tabPanel = (TableLayoutPanel)(this.panel1.Controls[0]);
string btn1Text = ((Button)(tabPanel.Controls[btn1Name])).Text;
MessageBox.Show(btn1Text);
}
//删除其所在行列 btn1,btn2,btn3
private void btn3Click(object sender, EventArgs e)
{
Button btn3 = (Button)sender;
TableLayoutPanel tabPanel = (TableLayoutPanel)(this.panel1.Controls[0]);
//一种删除方法 得到其对应btn1 btn2的Name
string btn3ID = btn3.Name.Substring(6);
string btn1Name = "button" + Convert.ToString((Convert.ToInt32(btn3ID) - 2));
string btn2Name = "button" + Convert.ToString((Convert.ToInt32(btn3ID) - 1));
tabPanel.Controls.Remove(btn3);
tabPanel.Controls.Remove(tabPanel.Controls[btn2Name]);
tabPanel.Controls.Remove(tabPanel.Controls[btn1Name]);
}
}
[/code]
注意:此类在 .NET Framework 2.0 版中是新增的。
表示一个面板,它可以在一个由行和列组成的网格中对其内容进行动态布局。
命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)
Code
public partial class tableLayoutPanelForm : Form
{
public tableLayoutPanelForm()
{
InitializeComponent();
}
private void tableLayoutPanelForm_Load(object sender, EventArgs e)
{
this.panel1.AutoScroll = true;
this.panel1.BorderStyle = BorderStyle.FixedSingle;
TableLayoutPanel tabPanel = new TableLayoutPanel();
tabPanel.ColumnCount = 2;
this.panel1.Controls.Add(tabPanel);
}
int iClickedTimes = 0;
//每点击一次 新增如下结构
//btn1 btn2
// btn3
//btn1跨两行
private void button1_Click(object sender, EventArgs e)
{
TableLayoutPanel tabPanel = (TableLayoutPanel)(this.panel1.Controls[0]);
tabPanel.RowCount = (iClickedTimes + 1) * 2; //再增两行
//增加button1
Button btn1 = new Button();
btn1.Name = "button" + (iClickedTimes * 3 + 1).ToString();
btn1.Text = "buttonText"+ (iClickedTimes*3+1).ToString();
btn1.Height = btn1.Height * 3;
btn1.Click += new EventHandler(btn1Click);//事件
tabPanel.Controls.Add(btn1, 0, iClickedTimes*2);
tabPanel.SetRowSpan(btn1, 2);//跨两行
//增加button2
Button btn2 = new Button();
btn2.Name = "button" + (iClickedTimes * 3 + 2).ToString();
btn2.Text = "buttonText" + (iClickedTimes * 3 + 2).ToString();
btn2.Click += new EventHandler(btn2Click);
tabPanel.Controls.Add(btn2, 1, iClickedTimes * 2);
//增加button3
Button btn3 = new Button();
btn3.Name = "button" + (iClickedTimes * 3 + 3).ToString();
btn3.Text = "buttonText" + (iClickedTimes * 3 + 3).ToString();
btn3.Click += new EventHandler(btn3Click);
tabPanel.Controls.Add(btn3, 1, iClickedTimes * 2 + 1);
tabPanel.Size=new Size(200, (iClickedTimes + 1) * 2 * 50);
iClickedTimes++;
}
//自身的Name
private void btn1Click(object sender, EventArgs e)
{
Button btn1 = (Button)sender;
MessageBox.Show(btn1.Name);
}
//通过命名规则 得到其对应btn1的Text
private void btn2Click(object sender, EventArgs e)
{
Button btn2 = (Button)sender;
string btn2ID = btn2.Name.Substring(6);//去掉Name中的button
//其对应btn1的Name为
string btn1Name = "button" + Convert.ToString((Convert.ToInt32(btn2ID) - 1));
//
TableLayoutPanel tabPanel = (TableLayoutPanel)(this.panel1.Controls[0]);
string btn1Text = ((Button)(tabPanel.Controls[btn1Name])).Text;
MessageBox.Show(btn1Text);
}
//删除其所在行列 btn1,btn2,btn3
private void btn3Click(object sender, EventArgs e)
{
Button btn3 = (Button)sender;
TableLayoutPanel tabPanel = (TableLayoutPanel)(this.panel1.Controls[0]);
//一种删除方法 得到其对应btn1 btn2的Name
string btn3ID = btn3.Name.Substring(6);
string btn1Name = "button" + Convert.ToString((Convert.ToInt32(btn3ID) - 2));
string btn2Name = "button" + Convert.ToString((Convert.ToInt32(btn3ID) - 1));
tabPanel.Controls.Remove(btn3);
tabPanel.Controls.Remove(tabPanel.Controls[btn2Name]);
tabPanel.Controls.Remove(tabPanel.Controls[btn1Name]);
}
}
[/code]
相关文章推荐
- c# TableLayoutPanel控件应用 动态添加控件及事件
- 在 TableLayoutPanel 控件中对齐和拉伸控件
- C#TableLayoutPanel控件导致Form开启时处于已编辑状态的问题分析
- C# TableLayoutPanel让一个控件占两行或者两列
- c# winForm TableLayoutPanel学习 合并行的布局及动态增加删除内部控件
- 关于TableLayoutPanel里放入控件无法将Dock设为Fill的解决办法
- c# winForm TableLayoutPanel学习 合并行的布局及动态增加删除内部控件
- 解决TableLayoutPanel控件闪烁
- 如何改变TableLayoutPanel中之控件间的距离
- 如何:在 TableLayoutPanel 控件中锚定和停靠子控件
- tableLayoutPanel容器,控件占多格的用法
- TableLayoutPanel控件动态删除一行,贴出来分享一下
- 使用 TableLayoutPanel 控件设置窗体布局
- 使用 TableLayoutPanel 控件设置窗体布局
- C# 双击TableLayoutPanel中某个控件全屏显示,再次双击恢复原貌
- 实现TableLayoutPanel控件的行列拆分的Sub过程
- c# TableLayoutPanel控件应用 动态添加控件及事件
- 17_C# 实现VMS客户端——控件_TableLayoutPanel
- 使用 TableLayoutPanel 在 Windows 窗体上自动排列控件
- c# TableLayoutPanel控件应用 动态添加控件及事件