4个回答
展开全部
原本的要求比较简单,只需在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]);
}
展开全部
在onclick事件里,new 一个button,放到面板上
比如 bt=new Button[mx,my];
for(;i;)
for(;j;)
this.panel1.Controls.Add(bt[i,j]);//上边的都省略写了
更多追问追答
追问
哦 这是 添加了一个 按钮啊
追答
嗯,动态添加,想添加几个添加几个,请采纳
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以先把textbox的visible属性改成false,在button_click事件中交textbox的visible属性改成true就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询