我有一个combox.当选择1时就动态添加一个textbox,选择2时就动态添加两个textbox.依此类推
第一次选择时,我用下面代码:
TextBox textBox3 = new TextBox();
textBox3.Text = "33";
textBox3.Name = "mytext_l_" + i.ToString();//长
textBox3.Location = new Point(50, 220 + i * 50);
textBox3.Size = new Size(50, 16); TextBox textBox4 = new TextBox();
textBox4.Text = "21";
textBox4.Name = "mytext_w_" + i.ToString();//宽
textBox4.Location = new Point(130, 220 + i * 50);
textBox4.Size = new Size(50, 16);
foreach (Control c in Controls)
{
if (c is TextBox && ((TextBox)c).Name.Contains("mytext_l_"))//长
{ s[i3] = Convert.ToDouble(((TextBox)c).Text); num2[i3] = s[i3];
i3++; }
if (c is TextBox && ((TextBox)c).Name.Contains("mytext_w_"))//宽
{ s[i4] = Convert.ToDouble(((TextBox)c).Text); num3[i4] = s[i4];
i4++; }
}
可以得到值,当我再选择combox中另一个值的时候就出问题了(比如,我第一次选择2,然后又选择3),就会出现读NULL值的情况。
不知大家是怎么解决,是先把动态添加的TEXTBOX去掉再添加新的textbox。
第一次选择时,我用下面代码:
TextBox textBox3 = new TextBox();
textBox3.Text = "33";
textBox3.Name = "mytext_l_" + i.ToString();//长
textBox3.Location = new Point(50, 220 + i * 50);
textBox3.Size = new Size(50, 16); TextBox textBox4 = new TextBox();
textBox4.Text = "21";
textBox4.Name = "mytext_w_" + i.ToString();//宽
textBox4.Location = new Point(130, 220 + i * 50);
textBox4.Size = new Size(50, 16);
foreach (Control c in Controls)
{
if (c is TextBox && ((TextBox)c).Name.Contains("mytext_l_"))//长
{ s[i3] = Convert.ToDouble(((TextBox)c).Text); num2[i3] = s[i3];
i3++; }
if (c is TextBox && ((TextBox)c).Name.Contains("mytext_w_"))//宽
{ s[i4] = Convert.ToDouble(((TextBox)c).Text); num3[i4] = s[i4];
i4++; }
}
可以得到值,当我再选择combox中另一个值的时候就出问题了(比如,我第一次选择2,然后又选择3),就会出现读NULL值的情况。
不知大家是怎么解决,是先把动态添加的TEXTBOX去掉再添加新的textbox。
解决方案 »
- 求教一个算法
- 使用GDI对图片进行裁剪,出现内存不足错误!
- [公告]可用分回赠活动获奖用户榜
- 求生成随机书的代码
- 在dataGrid控件中点击LinkButton后,打开相应文件的链接部分的代码是怎样的,IE支持的文件能直接打开,不支持的文件会弹出下载或存储的对话
- |ZYCIIS| 哪里有 像VS2012一样的WPF样式,谢谢
- 在DataGrid中怎么让空值不显示“(空)”呢?
- 怎样用多线程显示多个form?
- 装。NET前,有没有必要先装6。0
- 有研究过微软.net核心代码的朋友吗?进来谈谈心得如何?来者有分
- 帮小弟看看连接数据库的代码对不对?
- 现邀请CSDN知名人士实战演练代码生成项目设计.
string constr = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString;
SqlConnection conn = new SqlConnection(constr); //select 'Column_name' = name from syscolumns where id = (select id from sysobjects where id = object_id ('" + taname + "')) order by colid SqlCommand cmd = new SqlCommand(" select * from "+taname+"", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds,"ta");
//Response.Write("<script>alert('" + ds.Tables["ta"].Columns[0].ColumnName.ToString()+ "');</script>");
for (int i = 0; i < count; i++) //有多少列就循环多少次动态生成文本框及标签
{
System.Web.UI.WebControls.TextBox txt = new TextBox();
System.Web.UI.WebControls.Label la = new Label(); la.ID = "la" + i.ToString();
la.Text = ds.Tables["ta"].Columns[i].ColumnName.ToString()+": ";
txt.ID = "txt" + i.ToString();
//txt.Text = Request.QueryString["count"].ToString();
TextControls.Add(la.ID, la);
TextControls.Add(txt.ID, txt);
// this.Control[0].Controls.Add(TextBox1);
this.Panel1.Controls.Add(la);
this.Panel1.Controls.Add(txt);
// } // }
你稍微看看改一下就好
画面上一个comboBox还有一个panel就可以了 执行通过private void Form3_Load(object sender, EventArgs e)
{
//comboBox初始化1,2,3这3个值
this.comboBox1.Items.Add("1");
this.comboBox1.Items.Add("2");
this.comboBox1.Items.Add("3");
} private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//首先清空panel容器中的控件
this.panel1.Controls.Clear(); TextBox tb = null; int value = Convert.ToInt32(comboBox1.SelectedItem.ToString()); //增加控件
for (int i = 0; i < value ; i++)
{
//要在循环内New新控件 这样做法比较灵活
tb = new TextBox();
tb.Text = i.ToString();
tb.Location = new Point(10, 10 + i * 20);
this.panel1.Controls.Add(tb);
}
}希望能给你点帮助
你的代码不是很完整 你写的所谓动态是自己TextBox textBox3 = new TextBox(); 然后又TextBox textBox4 = new TextBox(); 一下的话 这不是死的 永远都是2个textBox 你选3的时候就是要出3个控件 根据你上面的代码貌似还是2个textBox吧 所以找不到第三个吧
for (int i = 0; i < n; i++)
{
//TextBox mytextbox = new TextBox();
//mytextbox.Name = "MyText" + i;
//this.panel1.Controls.Add(mytextbox); //TextBox textBox1 = new TextBox();
//textBox1.Text = "";
//textBox1.Name = "mytext_xlhd_" + i.ToString();//浴帘厚度
//textBox1.Location = new Point(50 , 220+ i * 50);
//textBox1.Size = new Size(50, 16);
//TextBox textBox2 = new TextBox();
//textBox2.Text = "";
//textBox2.Name = "mytext_xlgg_" + i.ToString();//浴帘规格
//textBox2.Location = new Point(120, 220 + i * 50);
//textBox2.Size = new Size(50, 16); TextBox textBox3 = new TextBox();
textBox3.Text = "33";
textBox3.Name = "mytext_l_" + i.ToString();//长
textBox3.Location = new Point(50, 220 + i * 50);
textBox3.Size = new Size(50, 16); TextBox textBox4 = new TextBox();
textBox4.Text = "21";
textBox4.Name = "mytext_w_" + i.ToString();//宽
textBox4.Location = new Point(130, 220 + i * 50);
textBox4.Size = new Size(50, 16); TextBox textBox5 = new TextBox();
textBox5.Text = "";
textBox5.Name = "mytext_h_" + i.ToString();//高
textBox5.Location = new Point(210, 220 + i * 50);
textBox5.Size = new Size(50, 16); //TextBox textBox6 = new TextBox();
//textBox6.Text = "";
//textBox6.Name = "mytext_g1_" + i.ToString();//每件净重
//textBox6.Location = new Point(400, 220 + i * 50);
//textBox6.Size = new Size(50, 16); TextBox textBox7 = new TextBox();
textBox7.Text = "";
textBox7.Name = "mytext_g2_" + i.ToString();//每箱净重
textBox7.Location = new Point(290, 220 + i * 50);
textBox7.Size = new Size(50, 16); TextBox textBox8 = new TextBox();
textBox8.Text = "";
textBox8.Name = "mytext_g3_" + i.ToString();//每箱毛重
textBox8.Location = new Point(370, 220 + i * 50);
textBox8.Size = new Size(50, 16); //TextBox textBox9 = new TextBox();
//textBox9.Text = "";
//textBox9.Name = "mytext_CBM_" + i.ToString();//CBM
//textBox9.Location = new Point(450, 220 + i * 50);
//textBox9.Size = new Size(50, 16);
TextBox textBox10 = new TextBox();
textBox10.Text = "10";
textBox10.Name = "mytext_cp_" + i.ToString();//每箱产品件数
textBox10.Location = new Point(530, 220 + i * 50);
textBox10.Size = new Size(50, 16);
TextBox textBox11 = new TextBox();
textBox11.Text = "";
textBox11.Name = "mytext_num_" + i.ToString();//订单数
textBox11.Location = new Point(610, 220 + i * 50);
textBox11.Size = new Size(50, 16); Label label_1 = new Label();//产品序列
label_1.Text = Convert.ToString(i + 1);
label_1.Location = new Point(10, 220 + i * 50);
label_1.Size = new Size(50, 16); //Controls.Add(textBox1);
//Controls.Add(textBox2);
this.panel1.Controls.Add(textBox3);
this.panel1.Controls.Add(textBox4);
this.panel1.Controls.Add(textBox5);
//Controls.Add(textBox6);
this.panel1.Controls.Add(textBox7);
this.panel1.Controls.Add(textBox8);
// Controls.Add(textBox9); this.panel1.Controls.Add(textBox10);
this.panel1.Controls.Add(textBox11);
this.panel1.Controls.Add(label_1);
}
可以的 你用我上面我给你的代码去运行 可以添加的
如果可以的就用我写的代码来做嘛 你写的我看了有点头晕 呵呵
初一看倒也没什么问题 应该可以添加显示出来了
要不就是你Panel的大小太小了
你画的textbox都跑Panel外面去了 所以显示不出了 其实还在的 我看你的长高设置都很大~