2013-09-11 33 views
0

这是我设置的所有列只输入数字代码:从DataGridView设置特定的列输入数字仅在vb.net

Private Sub dvBelt_EditingControlShowing(sender As Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dvBelt.EditingControlShowing 
    Try 
     RemoveHandler e.Control.KeyPress, AddressOf TextNumberKeypress 
     AddHandler e.Control.KeyPress, AddressOf TextNumberKeypress 

    Catch ex As Exception 
     '... 
    End Try 
End Sub 

Sub TextNumberKeypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) 

    If Asc(e.KeyChar) >= 33 And Asc(e.KeyChar) <= 47 Or _ 
     Asc(e.KeyChar) >= 58 Then 
     e.Handled = True 
    End If 

End Sub 

现在我要的是只有第一列设置为只允许输入数字,其余列可以输入字符串。

谢谢您的帮助

回答

1

里面dvBelt_EditingControlShowing方法注册只有在当前单元格指向第一列的事件,并注册其向特定细胞。在C++/Cli代码看起来像这样

void dvBelt_EditingControlShowing(System::Object ^sender, System::Windows::Forms::DataGridViewEditingControlShowingEventArgs ^e) { 
try { 

    if (this->dvBelt->CurrentCell->ColumnIndex == 0) { // 0 is the column index for the first column 
     //do the removing and adding of your kepress event here 
    } 
} catch (Exception ^ex) { 

}} 
+0

感谢您的想法先生,我现在有一个工作代码:) – Matthew

相关问题