如何创建一个带有按钮的自定义框架......?

时间:2012-10-24 09:28:04

标签: .net winforms

嗨,任何人都可以告诉我如何创建一个类似于我在这里发布的图片的自定义框架。框架应根据放置在其中的按钮进行调整。enter image description here

上传的图片可能会提供更好的主意,我想创建类似的东西。那么如何在Windows窗体中创建这样的框架呢?

我的代码:

private void button1_Click(object sender,EventArgs e)         {

        int start_x = Convert.ToInt32(textbox1.Text);
        int start_y = Convert.ToInt32(textbox2.Text);

        //Clear out the existing controls, we are generating a new table layout
        tableLayoutPanel1.Controls.Clear();

        //Clear out the existing row and column styles
        tableLayoutPanel1.ColumnStyles.Clear();
        tableLayoutPanel1.RowStyles.Clear();

        //Now we will generate the table, setting up the row and column counts first
        tableLayoutPanel1.ColumnCount = start_x;
        tableLayoutPanel1.RowCount = start_y;

        for (int x = 0; x < start_x; x++)
        {
            //First add a column
            tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));

           for (int y = 0; y < start_y; y++)
           {
                //Next, add a row.  Only do this when once, when creating the first column
                if (x == 0)
                {
                    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                }

                //Create the control, in this case we will add a button
                Button cmd = new Button();
                cmd.Width = 120;
                cmd.Height = 60;
                cmd.BackColor = Color.LightGreen;
                cmd.FlatStyle = FlatStyle.Popup;
                cmd.Text = string.Format("ds");
                cmd.Click += new EventHandler(this.btnDynamicButton_Click);

                //Finally, add the control to the correct location in the table
                tableLayoutPanel1.Controls.Add(cmd, x, y);
            }

但我不知道如何创建该框架并相应地安排它。

1 个答案:

答案 0 :(得分:1)

1)创建一个新的Windows窗体。

2)放置并调整其中的一些按钮。

3)在表单中为Resizing事件添加一个处理程序。

4)根据调整大小事件中窗口的新大小调整按钮的大小和位置。

.Net 4中有6个容器控制:Panel,SplitPanel,TabControl,TableLayoutPanel和FlowLayoutPanel。我认为Panel可以满足您的需求,所以首先在Form中添加一个Panel控件。根据需要调整大小。

在面板中放置一个命令按钮。根据需要调整大小。选择它并按F4激活属性窗口。找到FlatAppearance属性并将其更改为Flat。将背景颜色更改为白色,将Text属性更改为空字符串。现在你有一个白色按钮。复制并粘贴3次。根据需要放置按钮。

对于绿色按钮:开始为每个所需图像创建位图。创建一个命令按钮,将其更改为平面样式并像以前一样复制它。对于每个按钮,编辑Image属性并导入您创建的图像。

一旦有了“静态”布局,就需要做一些数学运算。您必须决定使用哪种调整大小策略:

a)比例:所有的尺寸都与容器成比例地扩大。

b)固定间距的伪比例。您在按钮之间设置了固定的间隔,并按相同的间距调整它们的大小。

由于“a”是最简单的方法,我会告诉你该怎么做。

1)创建一个这样的表。当表单在设计器中(未运行)

时,使用容器中按钮的位置填充值

Position of each button in the layout

2)在Resizing事件中:

2.1)确定X和Y的缩放因子。让我们称之为factorX和FactorY

2.2)每个按钮新位置将是其原始位置乘以缩放系数。例如,对于Button1,并假设屏幕在宽度上扩展2倍,在高度上扩展3倍:

上:10 x 2 = 20 左:10 x 3 = 30

2.3)每个按钮大小将是因子:

调整的原始大小

宽度:100 x 2 = 200 高度:100 x 3 = 300

底部:20 + 200 = 220 右:30 + 300 = 330

等等......