Next, you'll need to add a Data Grid View to a form. ' create new style object Dim style As New Data Grid View Cell Style ' set the alignment to the right (for numbers) style. Middle Right ' add a wee bit of padding to the right side Dim p As New Windows. This allows you to use a "business rule" to validate the user input.
From inside the Form Designer, you should see a very small triangle at the upper right-hand corner of the Data Grid View control. For example, if the Units On Hand column can never be a negative number,you could write a validating rule that looks to see if the value is negative prior to committing the changes to that row.
Cell Template End Get Set(By Val value As Data Grid View Cell) ' Ensure that the cell used for the template is a Masked Edit Cell If Not (value Is Nothing) And Not value. Is Assignable From( _ Get Type(Data Grid View Masked Edit Cell)) Then Throw New Invalid Cast Exception("Must be a Data Grid View Masked Edit Cell") End If My Base. It inherits from the Masked Text Box control (to get the user interface we want) and implements the Editing Control interface so that the control works inside the Data Grid View. Editing Control Row Index Get Return row Index Num End Get Set(By Val value As Integer) row Index Num = value End Set End Property Public Function Editing Control Wants Input Key(By Val key As Keys, By Val _ data Grid View Wants Input Key As Boolean) As Boolean Implements _ IData Grid View Editing Control.Cell Template = value End Set End Property ' ' New properties required by the Masked Text Box control ' Public Property Mask() As String Get Return p Mask End Get Set(By Val value As String) p Mask = value End Set End Property Public Property Prompt Char() As Char Get Return p Prompt Char End Get Set(By Val value As Char) p Prompt Char = value End Set End Property Public Property Validating Type() As Type Get Return p Validating Type End Get Set(By Val value As Type) p Validating Type = value End Set End Property End Class The next step is the Masked Edit Cell class. Most of the code required to implement the methods and properties is fairly straight forward. Editing Control Wants Input Key Return True End Function Public Sub Prepare Editing Control For Edit(By Val select All As Boolean) Implements _ IData Grid View Editing Control.It overrides the Initialize Editing Control method to allow the Mask, Prompt Char, and Validating Type properties from the column class to be passed onto the Cell class. Class Masked Edit Editing Control Inherits Masked Text Box Implements IData Grid View Editing Control Private data Grid View Control As Data Grid View Private value Is Changed As Boolean = False Private row Index Num As Integer Public Sub New() End Sub Public Property Editing Control Formatted Value() As Object Implements _ IData Grid View Editing Control. Prepare Editing Control For Edit ' No preparation needs to be done.' ' Check to see if the user input meets all of the business rules before ' we move on to another row. Data Grid View Cell Cancel Event Args) Handles _ Data Grid View1. Value The error checking discussed in the previous section may not detect "data integrity errors" (those errors where the input violates a database foreign key, unique, or primary key constraint).' Private Sub Data Grid View1_Row Validating(By Val sender As Object, By Val e As _ System. Row Validating ' Assume that text input is complete when you attempt to navigate ' away from the row Data Grid View1. In this case we're just checking to ' see if the Unit Price is a positive number If Data Grid View1. Luckily, the Data Grid View Combo Box Column control was designed to help solve this problem.For example, if a user types in alpha characters (like "abc") into a numeric field, a data conversion error occurs before Row Validation.In this case we need a "global" error checker to detect data conversion errors.This custom Data Grid View column control is contained in 3 classes...A Column control that inherits from Data Grid View Column, a Cell control that inherits from Data Grid View Text Box Cell, and an Editing Control that implements the IData Grid View Editing Control interface The Masked Edit Column class is fairly straight forward; it only overrides one property (to ensure that the correct cell type it used).You can bind a Data Table to the control so the user can easily add/delete/modify data in a database. Products) End Sub By default, the automatically generated columns may need some tweaking.Let's say that you have a Microsoft Access database that you plan to use in your program. For example, all columns are aligned to the left and have have no formatting.