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

就是本来有一个文本框,一按 那就就说出现第二个在 那个文本框的下面

原本的要求比较简单,只需在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]);
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-03

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

追问

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

追答

追问

帅哥 我的意思是 你点一下生成,出现一个,不用有提示框。你那些框是不是同步赋值的啊

追答

是可以同步赋值的

追问

http://zhidao.baidu.com/question/576878744.html
楼上的同学写的那么辛苦所以分先给他了 ,你来这个网页呗回答吧,我好给你分

第2个回答  2013-08-03

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

比如     bt=new Button[mx,my];
  for(;i;)
  for(;j;) 
    this.panel1.Controls.Add(bt[i,j]);//上边的都省略写了

追问

哦 这是 添加了一个 按钮啊

追答

嗯,动态添加,想添加几个添加几个,请采纳

追问

抱歉啊 你的答案不符合题目要求

追答

你把button改成textbox不就是添加文体框了吗?改成哪种类型就动态生成哪种

本回答被网友采纳
第3个回答  2013-08-03
你可以先把textbox的visible属性改成false,在button_click事件中交textbox的visible属性改成true就行了

c#中怎样通过单击button添加多个textbox
在这个示例中,当您单击Button时,将调用buttonAddTextBox_Click方法。该方法创建一个新的TextBox控件,并设置其位置、宽度和名称。然后,将新的TextBox控件添加到窗体的Controls集合中。您还可以添加一个文本更改事件处理程序来处理文本更改事件。

c# 怎么写按钮 按一下就多一个textbox
原本的要求比较简单,只需在Button的Click事件这么写就可以了,按钮的偏移量决定新TextBox相对原来的TextBox控件的位置。private void button1_Click(object sender, EventArgs e){ int offset_x = 0, office_y = 10;\/\/相对已有TextBox横和纵坐标偏移量 TextBox textbox2 = new TextBox();...

C#中如何通过点击一个窗体上button,给另一窗体上的textbox赋值
} privatevoid button1_Click(objectsender, EventArgs e) { this.Str= textBox1.Text; this.Close(); } }

...下一条按钮,就能在上面的多个textbox中显示新的纪录内容,是在windo...
把DataTable循环添加到List<string> list = new List<string>();中 上一条 list[当前条数]上一条 list[当前条数 - 1]下一条 list[当前条数 + 1]拼接sql语句查询

C#中如何在点击按钮后弹出一个输入参数的(textbox)的对话筐
\/\/这个比如就是你的按钮事件 if(TextBox1.Text.Trim().Length==0){ Response.Write("<Script>alert('请输入值');<\/Script>");} } WinForm:(桌面应用程序)private void button1_Click(object sender, EventArgs e){ if(textBox1.Text.Trim().Length == 0){ MessageBox.Show("请输入值")...

...怎么表达比如 点击这个按钮 然后下边的文本框就出来自己想写的文字...
在窗体中设置两个控件分别是:button按钮和textBox文本框,将button按钮的值设为“点 它”,然后在按钮事件中写上以下代码就可以在文本框中显示你要想写的内容了!下面是我给你的例子:if (this.button1.Text == "点 它"){ this.textBox1.Text = "你好!";this.button1.Text = "再 点";}...

C# 中button 怎样触发textbox?就是点一下button再显示textbox中的内 ...
是不会有字的喔。。按钮的代码如下:private void button1_Click(object sender, EventArgs e){ if (radioButton1.Checked == true){ textBox1.Text = "是情况1 出问题了";} else { textBox1.Text = "是情况2 出问题了";} 希望采纳! 本人亲自操作了。。肯定么得问题的啦!!

c#中在一个button事件,点击后要让另一个textbox显示文字内容,
1、首先打开vs2015,新建或者打开我们已有的程序。2、这里我打开自己编写过的程序,文件-打开-项目\/解决方案,找到自己的程序。3、把结果数据显示在textBox6中。4、启动-运行一下程序,可以发现在TextBox中数据显示正确而且自动换行。5、还有另一个方式是输入: textBox2.Text +="α,R,Ls,TH,LT,X...

...按钮跳出一个对话框,对话框有个类似textbox文本框。
private void button1_Click(object sender, EventArgs e) { f.Controls.Add(t); f.ShowDialog(); } private void fClosing(object sender, FormClosingEventArgs e) { button1.Text = t.Text; } }

C#一个BUTTON,两个TEXTBOX,在一个TEXTBOX输入,按BUTTON,在另一个TE...
你是说按下一个button,就在第二个textbox显示你在第一个textbox输入的值?那就在button的click事件里面写:this.textbox2.Text=this.textbox1.Text; 如果是要追加值的话:this.textbox2.Text=this.textbox2.Text.ToString()+this.textbox2.Text;...

相似回答