DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridでEnterキーを無効にするには

環境/言語:[Windows2000 C# Framework1.1]
分類:[.NET]

C#.net でフォームアプリの開発をしています。

DataGridでセルに値を入力後、Enterキーでの確定を無効にしたいと思っています。

DOBON.NET > プログラミング道 > .NET Tips
DataGridのセルに数字のみを入力可能にする
で、通常キーの無効はでき、KeyEventHandlerでCtrlやAltも取得できるのですが
EnterキーやTabキーのイベントが取得できませんでした。

DataGrid上で、Enterキーが押されたときのイベントは
どのように取得すればよいのでしょうか。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
でEnterキーの入力を取ること自体はできそうなのですが
今度は、DataGrid上のTextBoxにフォーカスがあるかどうかのチェック方法が分かりませんでした。
dataGrid1.Focusedをチェックすると、入力以外の部分を選択時には取れますが
TextBoxを入力中にはfalseのままでした。

DataGridの数値入力後のEnterキーを取得するにはどのようにすればいいでしょうか。
よろしくお願いいたします。
ProcessCmdKeyでTextBoxのフォーカスをチェックすることで解決しました。
お騒がせしました。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;

if (msg.Msg == WM_KEYDOWN)
{
if( keyCode == Keys.Enter || keyCode == Keys.Tab )
{
for( int i = 0; i < 15; i ++ ) // カラム数分
{
 DataGridTextBoxColumn cs = (DataGridTextBoxColumn)dataGridTableStyle1.GridColumnStyles[i];
 if( cs.TextBox.Focused == true )
{
// 処理
return true;
}
}
}
}
return base.ProcessCmdKey (ref msg, keyData);
}
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板