c# 怎么写按钮 按一下就多一个textbox

就是本来有一个文本框,一按那就就说出现第二个在那个文本框的下面... 就是本来有一个文本框,一按 那就就说出现第二个在 那个文本框的下面 展开
 我来答
ly17227720
2013-08-03 · TA获得超过610个赞
知道小有建树答主
回答量:170
采纳率:100%
帮助的人:133万
展开全部

原本的要求比较简单,只需在Button的Click事件这么写就可以了,按钮的偏移量决定新TextBox相对原来的TextBox控件的位置。

private void button1_Click(object sender, EventArgs e)
{
    int offset_x = 0, office_y = 10;//相对已有TextBox横和纵坐标偏移量
    TextBox textbox2 = new TextBox();
    textbox2.Location = new Point(textBox1.Location.X + offset_x, textBox1.Location.Y + textBox1.Height + office_y);
    this.Controls.Add(textbox2);
}

我又扩充了下,可以实现通过两个Button进行无限Add和Delete TextBox功能的,并调整Form大小使新增的TextBox可以完整显示,涉及函数、声明变量的位置较多,贴出全部Code如下:

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

namespace AddTextBox
{
    public partial class Form1 : Form
    {

        List<TextBox> ltb = new List<TextBox>();//创建泛型列表存储TextBox对象
        int index = 0;// TextBox在泛型列表的索引
        int offset_x = 0, office_y = 10;//相对已有TextBox横和纵坐标偏移量

        public Form1()
        {
            InitializeComponent();
            ltb.Add(textBox1);//把已有的TextBox添加到泛型列表中
        }

        private void bt_Add_Click(object sender, EventArgs e)
        {
            TextBox tb_Temp = new TextBox();
            tb_Temp.Location = new Point(ltb[index].Location.X + offset_x, ltb[index].Location.Y + ltb[index].Height + office_y);
            ltb.Add(tb_Temp);
            index++;
            //判断是否超出下边界,若超出调整下边界
            if(ltb[index].Left + ltb[index].Width > this.ClientRectangle.Width)
                this.Width += ltb[index].Left + ltb[index].Width - this.ClientRectangle.Width;
            //判断是否超出右边界,若超出调整右边界
            if(ltb[index].Top + ltb[index].Height > this.ClientRectangle.Height)
                this.Height += ltb[index].Top + ltb[index].Height - this.ClientRectangle.Height;
            this.Controls.Add(ltb[index]);
        }

        private void bt_Delete_Click(object sender, EventArgs e)
        {
            if (index == 0)
                return;
            this.Controls.Remove(ltb[index]);
            ltb.Remove(ltb[index--]);
        }
    }
}
追问
帅哥  高手啊  能不能给我 再改改  改成如果超出下边就  就在 最开始的那个框 右边出一个框,最好 是有个定义什么 的 应为我要用框里的值来做查询 ,就是说 每次出来的框  里的值都被定义了 比如str i  然后i 是1,2, ,3什么的对应每个文本框  ,谢谢了 ,我再加点分
追答

回答字符数有限制,不贴全部code了。修改的地方:

 

int offset_x = 10, office_y = 10;//数值根据实际设置
private void bt_Add_Click(object sender, EventArgs e) {
    TextBox tb_Temp = new TextBox();
            //判断不超边界,向下添加
    if (ltb[index].Top + ltb[index].Height * 2 + office_y < this.ClientRectangle.Height ||ltb[index].Top + ltb[index].Height * 2 + office_y == this.ClientRectangle.Height)
        tb_Temp.Location = new Point(ltb[index].Location.X, ltb[index].Location.Y + ltb[index].Height + office_y);
            //超出边界,向右添加
    if (ltb[index].Top + ltb[index].Height * 2 + office_y > this.ClientRectangle.Height)
        tb_Temp.Location = new Point(ltb[index].Location.X + ltb[index].Width + offset_x, ltb[0].Location.Y);
            //超出右边界,扩展窗体大小
    if (ltb[index].Left + ltb[index].Width > this.ClientRectangle.Width)
        this.Width += ltb[index].Left + ltb[index].Width + offset_x - this.ClientRectangle.Width;
    index++;
    ltb.Add(tb_Temp);
    this.Controls.Add(ltb[index]);
}
cjj796
2013-08-03 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3481万
展开全部

这样的效果可以吗,满意请采纳,发代码

更多追问追答
追问
帅气啊  我要用框里的值来做查询 ,就是说 每次出来的框  里的值都被定义了 比如str i  然后i 是1,2, ,3什么的对应每个文本框  ,还有那个框里 不要 编号 ,谢谢了 ,在下  再加10分
追答

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leichenfeng
2013-08-03 · TA获得超过757个赞
知道小有建树答主
回答量:425
采纳率:0%
帮助的人:481万
展开全部

在onclick事件里,new 一个button,放到面板上

比如     bt=new Button[mx,my];
  for(;i;)
  for(;j;) 
    this.panel1.Controls.Add(bt[i,j]);//上边的都省略写了
更多追问追答
追问
哦   这是 添加了一个  按钮啊
追答
嗯,动态添加,想添加几个添加几个,请采纳
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
盘点凌凌漆
2013-08-03 · TA获得超过143个赞
知道答主
回答量:177
采纳率:0%
帮助的人:47.4万
展开全部
你可以先把textbox的visible属性改成false,在button_click事件中交textbox的visible属性改成true就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式