winform 动态生成的控件 如何取值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform 动态生成的控件 如何取值相关的知识,希望对你有一定的参考价值。
动态生成多个textbox combobox 控件 如何获取它们的值拼接后赋值给label进行显示
参考技术A 定义一个字符串变量利用循环在循环中用变量+=textbox和comboobx控件的Text属性
最后让label的Text属性=字符串变量追问
string txbName = this.comboBox1.Text;
Point pt = new Point(0, 0);
TextBox txtbox = new TextBox();
this.flowLayoutPanel1.Controls.Add(txtbox);
txtbox.Text = txbName;
txtbox.Name = textBoxName;
txtbox.Location = pt;
txtbox.Width = 150;
txtbox.Height = 20;
这是我的代码 根据这段代码应该怎么解决呢
public static int count =0;//记录textBox实例生成数
public List<TextBox> lb = new List<TextBox>(); //list的初始化
public Form1()
InitializeComponent();
private void textBox1_TextChanged(object sender, EventArgs e)
label1.Text = "";//label1de初始化
private void button1_Click(object sender, EventArgs e)//button1触发创建textbox实例事件
TextBox t_textBox = new TextBox();
t_textBox.Text = count.ToString();
t_textBox.Location = new Point(0, 0 + 50 * count);//这样做比较好区分各各textbox的控件
this.Controls.Add(t_textBox);//放入form1窗体中
lb.Add(t_textBox);//存进之前实例化的list泛型类中
count++;
private void button2_Click(object sender, EventArgs e)//button2用来遍历已创建textbox控件
foreach (TextBox t_tb in lb)
label1.Text += t_tb.Text;
combox的也是同理,还有不懂的欢迎提问追问
this.label1.Text = this.flowLayoutPanel1.Controls[1].ToString();
我现在是这样取的值。因为需要动态生成很多控件。而我现在需要取到的值是第一个动态控件Textbox里的内容。
不过现在label1.Text 的内容是这样的:"System.Windows.Forms.TextBox, Text: 套口"
套口是我最终需要的 请问如何把前面那段去掉只取出 我需要的呢 或者 是我哪里弄错了呢?
不要直接将你需要操作的控件toString(),那样只会得到控件的实例化名称,你的目标是取得textBox里的text属性的值。而你又是通过控件组遍历的,给你个建议。用is关键字去约束。
foreach(Controls ctl in this.flowLayoutPanel1.Controls)
if(ctl is textBox)
label1.Text+= ctl.Text;
参考资料:人脑
追问我刚刚已经解决了 不过还是谢谢你 你这个建议我试一下
参考资料:人脑
本回答被提问者采纳 参考技术C 生成时,设置其TextChanged事件,在此事件中给label赋值。winform 动态生成自定义控件添加单击事件无效
private void Form1_Load(object sender, EventArgs e)
newButton[,] bt = new newButton[6, 6];
for (int i = 0; i < 6; i++)
for (int j = 0; j < 6; j++)
bt[i, j] = new newButton();
bt[i, j].Width = 50;
bt[i, j].Height = 50;
bt[i, j].Top = i * 50;
bt[i, j].Left = j * 50;
this.Controls.Add(bt[i, j]);
bt[i, j].Click += new EventHandler(Button_Click);
private void Button_Click(object sender,EventArgs e)
MessageBox.Show("aaaa");
说明:自定义了一个button控件,仅仅只是在button控件的基础上添加了一个可读可写的属性,新生成的控件取名为newButton。但是下面这个代码无效,
bt[i, j].Click += new EventHandler(Button_Click);
如果将newButton换成button的话这个代码就是有效的,
蛋疼了半天,求高手讲解下原因,或指定一下方向。
自定义控件,仅仅加了个isMine
namespace MyButton
public partial class newButton : UserControl
public newButton()
InitializeComponent();
private void UserControl1_Load(object sender, EventArgs e)
private int isMine=0;
public int IsMine
get return isMine;
set isMine = value;
在你的自定义newButton加这么一句也许更好
private void newButton_Load(object sender, EventArgs e)
this.BackColor = Color.Blue;
另外,为什么你定义newButton 要继承自UserControl而不是button?追问
感谢啊,终于解决了问题
之前自定义控件时只写过书上的几个例子,没注意newButton的继承问题。
不过二维数组倒是没问题,我是用它来动态生成button。
定义已发
以上是关于winform 动态生成的控件 如何取值的主要内容,如果未能解决你的问题,请参考以下文章
c# winform groupbox上动态生成的控件,如何让控件随着分辨率变化而自动调整位置和大小
winform怎么动态生成多个panel控件,并且生成两个控件换一行呢?