How can I use events to restrict key input to grid cells

Platform: WinForms| Category: Datagrid

If you make sure your DataGrid is using a DataGridTableStyle, then you can access the TextBox through the GridColumnStyles collection and hook the event there. Here is some code….

[C#]
	//in formload
	this.dataGrid2.DataSource = this.dataSet11.Customers; // set the data source

            	//make sure grid has a tablestyle
	DataGridTableStyle ts = new DataGridTableStyle();
	ts.MappingName = this.dataSet11.Customers.TableName;
	this.dataGrid2.TableStyles.Add(ts);

	//now we can wire up wire up events for columns 1 and 4 ....
	DataGridTextBoxColumn tbc = (DataGridTextBoxColumn)ts.GridColumnStyles[0];
	tbc.TextBox.KeyPress += new KeyPressEventHandler(CellKeyPress);

	tbc = (DataGridTextBoxColumn)ts.GridColumnStyles[3];
	tbc.TextBox.KeyPress += new KeyPressEventHandler(CellKeyPress);.....

	//the handler
	private void CellKeyPress(object sender, KeyPressEventArgs e)
	{
		//don’t allow 1’s
		if(e.KeyChar == ’1’)
		e.Handled = true;
	}

[VB.NET]
	 ’in formload
	Me.dataGrid2.DataSource = Me.dataSet11.Customers ’ set the data source
	
	’make sure grid has a tablestyle
	Dim ts As New DataGridTableStyle()
	ts.MappingName = Me.dataSet11.Customers.TableName
	Me.dataGrid2.TableStyles.Add(ts)

	’now we can wire up wire up events for columns 1 and 4 ....
	Dim tbc as DataGridTextBoxColumn = CType(ts.GridColumnStyles(0), DataGridTextBoxColumn)
	AddHandler tbc.TextBox.KeyPress, AddressOf CellKeyPress

	tbc = CType(ts.GridColumnStyles(3), DataGridTextBoxColumn)
	AddHandler tbc.TextBox.KeyPress, AddressOf CellKeyPress
	.....

	’the handler
	Private Sub CellKeyPress(sender As Object, e As KeyPressEventArgs) 
   		’don’t allow 1’s
		If e.KeyChar = '1'c Then
			e.Handled = True
		End If
	End Sub ’CellKeyPress

Share with

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.