2016-04-01 32 views
0

私はdatagridview(DataGridViewsalarydetail)を持っています。Visual Basicでdatagridviewにdatetimepickerを追加するには?

  1. 式(唯一の番号とアルファベットを受け入れる)、
  2. 効力発生日(日付のみの例を受け入れる:14/09/2016)、
  3. 基本速度(のみ受け入れ数とドット[これは、3つの列を持っています。]をダブル)。

問題は、データグリッドビューに日付時間ピッカーを配置する方法、または日付列を有効な日付のみを受け入れるように設定する方法です。私は、Visual Basicのエクスプレス2015使用してい

、MySQLの、phpMyAdminは、とVB.NET

私はMSDNのサイトからコードを試してみましたが、私は私のプロジェクトで実装する方法がわかりません。

Private Sub DataGridViewsalarydetail_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridViewsalarydetail.EditingControlShowing 
     If TypeOf e.Control Is TextBox Then 
      DirectCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Upper 
    End If 

    If DataGridViewsalarydetail.CurrentCell.ColumnIndex = 0 Then 

     AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyPress 

    ElseIf DataGridViewsalarydetail.CurrentCell.ColumnIndex = 1 Then 

     AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyPress2 

    ElseIf DataGridViewsalarydetail.CurrentCell.ColumnIndex = 2 Then 

     AddHandler CType(e.Control, TextBox).KeyPress, AddressOf TextBox_keyPress1 

    End If 

End Sub 

Private Sub TextBox_keyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) 

    'If Char.IsDigit(CChar(CStr(e.KeyChar))) = False Then e.Handled = True 

End Sub 

Private Sub TextBox_keyPress1(ByVal sender As Object, ByVal e As KeyPressEventArgs) 

    'If Not (Char.IsDigit(CChar(CStr(e.KeyChar))) Or e.KeyChar = ".") Then e.Handled = True 
    e.Handled = True 
    If e.KeyChar Like "." Or e.KeyChar = Chr(&H8) Or IsNumeric(e.KeyChar) Then 
     e.Handled = False 
    End If 

End Sub 
Private Sub TextBox_keyPress2(ByVal sender As Object, ByVal e As KeyPressEventArgs) 

    If Not (Char.IsDigit(CChar(CStr(e.KeyChar))) Or e.KeyChar = "/") Then e.Handled = True 
    'e.Handled = True 
    'If e.KeyChar Like "." Or e.KeyChar Like "/" Or e.KeyChar = Chr(&H8) Or IsNumeric(e.KeyChar) Then 
    ' e.Handled = False 
    'End If 

End Sub 

Private Sub DataGridViewsalarydetail_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridViewsalarydetail.CellValidating 
    If e.ColumnIndex = 1 Then 
     Dim dt As DateTime 
     If e.FormattedValue.ToString <> String.Empty AndAlso Not DateTime.TryParse(e.FormattedValue.ToString, dt) Then 
      MessageBox.Show("Enter correct Date") 
      'Me.DataGridViewsalarydetail.Rows(e.RowIndex).ErrorText = "Enter a valid Date time" 
      e.Cancel = True 
     End If 
    End If 
End Sub 

答えて

0

datagridview.CellEndEdit eventを使用して、ユーザー入力が正しいかどうかを確認してください。

以下の例のようにIsDate functionを使用することも、独自の関数を作成してユーザーの入力を確認することもできます。

Public Sub effectiveDate() Handles DataGridViewsalarydetail.CellEndEdit 
    'Get current RowIndex and ColumnIndex 
    Dim row As Integer = DataGridViewsalarydetail.CurrentCell.RowIndex 
    Dim column As Integer = DataGridViewsalarydetail.CurrentCell.ColumnIndex() 

    If column = 1 Then 'If you are currently in the second column of the datagridview 
     If IsDate(DataGridViewsalarydetail.Rows(row).Cells(column).Value) = False Then 
      MsgBox("The date of the " & row & " row is not correct") 
      Dim cell As Windows.Forms.DataGridViewCell = DataGridViewsalarydetail.Rows(row).Cells(column) 
      'Focus the cell 
      DataGridViewsalarydetail.CurrentCell = cell 
      DataGridViewsalarydetail.BeginEdit(True) 
     End If 
    End If 
End Sub 
+0

私はそのコードを試しました。それは私にエラーを与える。私はコードを実装することができますか? –

+0

あなたの質問を編集し、DataGridviewのコードを表示してください – nbadaud

+0

申し訳ありません、私はVBコードで新しいです。だから、私はあなたのコードを実行するために追加する必要がありますか?もう1つ、私はdatagridviewに新しいdatagridviewを作成せずに日付時刻ピッカーを置くことができますか?私はちょうど既存のclolumnに入れていることを意味します。 –

関連する問題