C# 从所有动态生成的控件中获取文本的总和
我有一个windows窗体,其中有下面列出的控件 面板1 button1=添加新手机 按钮2=正常 单击按钮1时,会添加一个用户控件。您可以添加任意多的用户控件。userControl定义由五个控件组成: 组合框1 组合框2 文本框1 文本框2 textbox3 我想添加所有动态生成的usercontrol控件的textbox3文本,并将其设置为winform上的一个标签。我如何才能做到这一点?单击ok按钮 我试过这个密码C# 从所有动态生成的控件中获取文本的总和,c#,winforms,C#,Winforms,我有一个windows窗体,其中有下面列出的控件 面板1 button1=添加新手机 按钮2=正常 单击按钮1时,会添加一个用户控件。您可以添加任意多的用户控件。userControl定义由五个控件组成: 组合框1 组合框2 文本框1 文本框2 textbox3 我想添加所有动态生成的usercontrol控件的textbox3文本,并将其设置为winform上的一个标签。我如何才能做到这一点?单击ok按钮 我试过这个密码 foreach (Control ctrl in panel1.Cont
foreach (Control ctrl in panel1.Controls)
{
if (ctrl is UserControl)
{
UserControl1 myCrl = ctrl as UserControl1;
int g;
// but this doesnt happen an error is coming
g += Convert.ToInt32(myCrl.textbox3.Text);
}
}
如何获取所有动态生成控件文本的总和可能您的“错误”是您在foreach
循环中声明了g
,因此实际上没有进行任何总和。此外,您不需要初始化它。将代码更改为:
var g = 0;
foreach (Control ctrl in Controls)
{
if (ctrl is UserControl1)
{
var myCrl = ctrl as UserControl1;
g += Convert.ToInt32(myCrl.textbox2.Text);
}
}
//Set your label's text
您的“错误”可能是您在foreach
循环中声明了g
,因此实际上没有进行任何求和。此外,您不需要初始化它。将代码更改为:
var g = 0;
foreach (Control ctrl in Controls)
{
if (ctrl is UserControl1)
{
var myCrl = ctrl as UserControl1;
g += Convert.ToInt32(myCrl.textbox2.Text);
}
}
//Set your label's text
int和=0;
panel1.Controls.OfType().ToList().ForEach(
x=>
{
TextBox ctl=x.Controls.OfType()。其中(y=>y.Name==“textbox2”).FirstOrDefault();
sum+=(ctl==null?0:(!String.IsNullOrEmpty(ctl.Text.Trim())?Convert.ToInt32(ctl.Text.Trim()):0));
}
);
int sum=0;
panel1.Controls.OfType().ToList().ForEach(
x=>
{
TextBox ctl=x.Controls.OfType()。其中(y=>y.Name==“textbox2”).FirstOrDefault();
sum+=(ctl==null?0:(!String.IsNullOrEmpty(ctl.Text.Trim())?Convert.ToInt32(ctl.Text.Trim()):0));
}
);
错误消息是什么?和“int g”应该给出一个值(很可能是0,即int g=0;)。请向我们显示错误消息。我假设您正在尝试将非数值转换为整数!此外,您应该在foreach
之外定义g
,错误消息是什么?和“int g”应该给出一个值(很可能是0,即int g=0;)。请向我们显示错误消息。我假设您正在尝试将非数值转换为整数!此外,你应该在foreach
之外定义g
你能在这里帮我吗?你能在这里帮我吗?你能在这里帮我吗
double totalSumValue = 0;
foreach (Control ctrl in Controls)
{
if (ctrl is UserControl)
{
var myCrl = ctrl as UserControl;
totalSumValue += Convert.ToInt32(myCrl.textbox3.Text);
}
}
lblSumValue.text=totalSumValue.toString();