【问题标题】:foreach statement with parallel iterations using controls in C#使用 C# 中的控件进行并行迭代的 foreach 语句
【发布时间】:2023-03-06 22:26:01
【问题描述】:

我正在制作一个应用程序,我试图从动态创建的文本框中将值存储在数据库中。

我使用的代码是:

CheckBox clickedBtn = sender as CheckBox;
name = clickedBtn.Name;

foreach (CheckBox c in panel1.Controls.OfType<CheckBox>())
{
    if (c.Checked)
    {
        foreach(TextBox cd in panel1.Controls.OfType<TextBox>())
        {
            string val = cd.Text;

            if (val != "" && cd.Name == name)
            {
                con3.Open();

                SqlCommand cmd3 = new SqlCommand("insert into.....", con3);

                cmd3.ExecuteNonQuery();
                con3.Close();
            }
        }
    }
}

此代码正在运行,但它仅在数据库中输入最后一个选中值的次数与选中的复选框数量一样多,我想发送选中相应复选框的所有文本框的值。

基本上我正在尝试运行复选框和文本框的 foreach 循环同时运行,而不是相互运行。

【问题讨论】:

  • 好吧,您需要某种方式将CheckBoxTextBox 关联起来。据我所知,您的代码不会尝试这样做 - 您没有在内部循环中的任何地方使用 c
  • 你能告诉我该怎么做吗?我尝试了很多,但找不到方法。或者有什么方法可以为文本框和复选框链接 foreach 并行运行?

标签: c# .net winforms linq


【解决方案1】:

删除顶部的name = clickedBtn.Name; 并在if (c.Checked) 内执行此操作

foreach (CheckBox c in panel1.Controls.OfType<CheckBox>())
{
    if (c.Checked)
    {
        var name = c.Name;
        foreach (TextBox cd in panel1.Controls.OfType<TextBox>())
        {
            string val = cd.Text;
            if (val != "" && cd.Name == name)
            {
                con3.Open();
                SqlCommand cmd3 = new SqlCommand("insert into.....", con3);
                cmd3.ExecuteNonQuery();
                con3.Close();
            }
        }
    }
} 

【讨论】:

  • 非常感谢达米特。有效!!我很高兴找到您对这个问题的建议,并且代码运行顺利!!非常感谢!!
【解决方案2】:

我已经 +1 给 Damith,他的回答是正确的,你可以优化你的代码

foreach (var name in from c in panel1.Controls.OfType<CheckBox>() where c.Checked select c.Name)
{
   foreach (TextBox cd in panel1.Controls.OfType<TextBox>().Where(cd => cd.Text != "" && cd.Name == name))
   {
       con3.Open();
       SqlCommand cmd3 = new SqlCommand("insert into.....", con3);
       cmd3.ExecuteNonQuery();
       con3.Close();
    }
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2011-09-11
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2011-05-23
    相关资源
    最近更新 更多