2009-08-25 25 views
0

データが含まれているかどうかを確認したいフォームにいくつかのコントロール(TextBoxes、DateTimePickers、MaskedTextBoxes)があります。データのControl.Valueを確認してください

private void radBtnSave_Click(object sender, EventArgs e) 
    { 
     this.Cancelled = false; 
     bool bValid = true; 

     foreach(Control control in this.Controls) 
     { 
      if (control.Tag == "Required") 
      { 
       if (control.Text == "" || control.Text == null) 
       { 
        errorProvider.SetError(control, "* Required Field"); 
        bValid = false; 
       } 
       else 
       { 
        errorProvider.SetError(control, ""); 
       } 
      } 
     } 

     if (bValid == true) 
     { 
      bool bSaved = A133.SaveData(); 
      if (bSaved != true) 
      { 
       MessageBox.Show("Error saving record"); 
      } 
      else 
      { 
       MessageBox.Show("Data saved successfully!"); 
      } 
     } 
    } 

これはのTextBoxとMaskedEditBoxesのため正常に動作します、しかし、それはDateTimePickersのために動作しません:私は私の「保存」ボタンのClickイベントに次のコードを持っています。それらのために、私は.Valueプロパティをチェックする必要があることを知っているが、私はコントロールオブジェクト(つまり、 "control.Value ==" "|| control.Value == null")からアクセスできないようです。

明らかなものがありませんか?このコードを修正してDateTimePickerの値を確認できるようにするための提案(またはコードを完全に改善すること)は大変ありがたいです。

+0

ありがとうございました!私は今、正しく働いている。 – Sesame

答えて

3

あなたはDateTimePickerのにそれらをキャストする必要があります。

DateTimePicker dtp = control as DateTimePicker; 
if(dtp !=null) 
{ 
    //here you can access dtp.Value; 
} 

また、あなたのコードの最初の部分でString.IsNullOrEmpty(control.Text)を使用します。

0

あなたはこのような何かをする必要があります

foreach(Control control in this.Controls) 
{ 
    if (control.Tag == "Required") 
    { 
     DateTimePicker dtp = control as DateTimePicker; 
     if (dtp != null) 
     { 
      // use dtp properties. 
     } 
     else if (control.Text == "" || control.Text == null) 
     { 
      errorProvider.SetError(control, "* Required Field"); 
      bValid = false; 
     } 
     else 
     { 
      errorProvider.SetError(control, ""); 
     } 
    } 
} 
1

ControlのためのValueプロパティはありません。たとえば、DateTimePickerは、独自の独自のプロパティを作成します。

残念ながら、あなたはControlオブジェクトの単一ループからこれを処理する完全な一般的な方法はありません。あなたができることは、この行に沿ったものです。

if(control is DateTimePicker) 
{ 
    var picker = control as DateTimePicker; 
    // handle DateTimePicker specific validation. 
} 
関連する問題