如何从字符串值设置NumericUpDown的value属性

本文关键字:NumericUpDown value 属性 设置 字符串 | 更新日期: 2023-09-27 18:18:47

我想从DataGridView的选定行中获取值,并将它们分配到几个不同的当控件的名称与列的名称(有TextBox, ComboBoxNumericUpDown)匹配时,

这是我当前填充控件的方式:

 Form myForm = new Form();
 if (comboBoxTable.Text == "Client")
{
       myForm = new EditClientDataWindow();
 }
else if (comboBoxTable.Text == "Agency")
 {
       myForm = new EditAgencyDataWindow();
 }
else if (comboBoxTable.Text == "Medicine")
 {
       myForm = new EditMedicineDataWindow();
 }
string val;
foreach (Control c in myForm.Controls)
{
    for (int i = 0; i < dataGridViewMDB.ColumnCount; i++)
    {
          val = dataGridViewMDB.SelectedRows[0].Cells[i].Value.ToString();
          if (dataGridViewMDB.Columns[i].Name.ToString() ==
                            c.Name.ToLower().Replace(c.GetType().ToString().ToLower().Replace("system.windows.forms.", ""), ""))
          {
          if (c is NumericUpDown)
               (c as NumericUpDown).Value = Convert.ToInt32(val);
          else
               c.Text = val;
          }
    }
}

除了NumericUpDown之外,其他类型的控件都是正确填充的。对于NumericUpDown,我只得到默认的-1值。我也尝试使用decimal.Parse()Convert.ToDecimal()代替Convert.ToInt32(),但结果没有变化。

NumericUpDown的范围被设置为-1和999

如何从字符串值设置NumericUpDown的value属性

这不是一个答案,而是一种减少错误搜索空间的方法,因为它在底层发生了很多事情。

请将您的代码改为

foreach (Control c in myForm.Controls)
{
    if (c is NumericUpDown)
       (c as NumericUpDown).Value = 12;
    else
       c.Text = "12";
}

在此之后,所有控件应设置为12。你能测试一下,然后带着观察结果回来吗?