【问题标题】:Getting Control Name from String and then use ControlName.Text to add to datatable从字符串获取控件名称,然后使用 ControlName.Text 添加到数据表
【发布时间】:2014-11-11 04:45:06
【问题描述】:

我正在尝试将 TextBoxes 中的值添加到 DataTable 中,以便我可以检查空值(以及后来的重复值)

我可以直接从文本框将行添加到表中,但是当我尝试动态添加最后一个文本框时,我的代码添加的是字符串而不是所需的值,如下所示:

            DataTable dt = new DataTable("CheckforNulls");
            dt.Columns.Add("ColumnToCheck", typeof(string));

            dt.Rows.Add(txtSettingsOneValue.Text.ToLower());
            dt.Rows.Add(txtSettingsTwoValue.Text.ToLower());

            //ComboBox that has a value between 1 and 12
            int x = int.Parse(cbSettingsThreeValue.SelectedItem.ToString());

            int i = 1;
            while (i <= x)
            {
                string threeValue = "txtSettingsThreeValue" + i + ".Text.ToLower()";

                dt.Rows.Add(threeValue);

                i++;
            }

目前我的DataTable在运行后如下所示

            ColumnToCheck
            V
            S
            txtSettingsThreeValue1.Text.ToLower()

有什么方法可以将字符串转换为现有的文本框名称,然后将其添加到文本框的值到数据表中?

【问题讨论】:

    标签: c# winforms textbox type-conversion controls


    【解决方案1】:

    当需要使用.Text与控件关联的属性时,您实际上需要Find the control

    问题出在这里:

    string threeValue = "txtSettingsThreeValue" + i + ".Text.ToLower()";
    

    From control collection 找到您的控件,将其转换为文本框并访问 Text 属性。

    TextBox txtBox = (TextBox)this.Controls.Find("txtSettingsThreeValue" + i, false).FirstOrDefault();
    string threeValue = txtBox.Text.ToLower();
    

    如果您的控件嵌套在其他一些控件中,则使用true

    请参阅上面 MSDN 参考中的说明。

    【讨论】:

      【解决方案2】:

      按名称查找控件:

      private Control FindControlByName(string name)
      {
          foreach (Control c in this.Controls) 
          {
             if (c.Name == name)
                 return c; //found
          }
          return null; //not found
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-23
        • 1970-01-01
        • 2015-10-11
        • 2012-05-20
        • 1970-01-01
        • 2023-01-11
        相关资源
        最近更新 更多