The problem is getting at the control thatis handling the keystrokes. When you type in a grid cell, it is an embedded TextBox that gets the keystrokes and not the datagrid.
One way you can handle this is to look through all the controls that are parented by the datagrid, and hook a KeyPress eventhandler for each parented textbox. You could do this at the end of Form_Load after the DataGrid has been set up. Here is code that does this.
foreach(Control c in this.dataGrid1.Controls)
{
TextBox tb = c as TextBox;
if(tb != null)
{
tb.KeyPress += new KeyPressEventHandler(CellKeyPress);
}
}
Then in your CellKeyPress method, check to see if you are on the cell you want to be uppercase, and if so, handle things. Here is a try at this.
private void CellKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(this.dataGrid1.CurrentRowIndex == 1 && this.dataGrid1.CurrentCell.ColumnNumber == 1)
{
TextBox tb = sender as TextBox;
if(tb != null && char.IsLetter(e.KeyChar) && !char.IsUpper(e.KeyChar))
{
SendKeys.Send(char.ToUpper(e.KeyChar).ToString());
e.Handled = true;
}
}
}