2015-05-04 23 views
1

我有一个窗体与多个TextBoxNumericUpDownDateTimePicker。我想编程此控件的所有值,并将其插入到SQL Server数据库c#循环并以编程方式获取所有datetimepicker的值在窗体中

我想这个代码

foreach (Control contrl in this.Controls) 
{ 
    if (contrl.Name != "") 
    { 
      vv.Add(contrl.Text); 
      //MessageBox.Show(contrl.Name); 
    } 

} 

能把我的TextBoxNumericUpDown正确的价值观,但不DateTimePicker

+1

这是因为DateTimePicker的值存储在Value中,而不是像Text那样存储在Text中n'Textbox' – Jibbow

+0

您可能必须转换为DateTimePicker并检查转换是否成功,例如:var picker = control as DateTimePicker; if(picker!= null){var value =((DateTimePicker)picker).Value; }' –

回答

4

DateTimePickerNumericUpDown使用Value属性来获取它的内容,TextBox使用Text属性。

所以你需要检查每个控制

foreach (Control contrl in this.Controls) 
{ 
    if (contrl.Name != "") 
    { 
     if(contrl is TextBox) 
      vv.Add(((TextBox)contrl).Text);  
     else if(contrl is DateTimePicker) 
      vv.Add(((DateTimePicker)contrl).Value); 
     else if(contrl is NumericUpDown) 
      vv.Add(((NumericUpDown)contrl).Value); 
    } 

} 
0
DateTimePicker 

的类型不其值存储在“文本”属性,而不是将其存储在“值”属性

所以尝试在这个循环中添加一个条件,

foreach (Control contrl in this.Controls) 
{ 
     if (contrl.Name != "") 
     { 
     vv.Add(contrl.Text); 
     //MessageBox.Show(contrl.Name); 
     } 

     if (contrl.Name == "YOurDateTimePickerControlName") 
     { 
     vv.Add(contrl.Value.ToString()); 
     } 

} 
相关问题