解決済みの質問
VC++で、フォーム上に複数のTextBoxを配置して、タブインデックスで、次に移動したいTextBoxを設定しました。
最初のTextBoxに入力した後、Tabキーで、次のコントロールに移動することはできましたが、Enterキーで次のコントロールへ移動することはできないのでしょうか?
TextBoxのプロパティの設定方法とを教えて下さい。
投稿日時 - 2009-01-08 17:58:10
※TextBox、フォームからC++/CLIのWindowsフォームアプリケーションと仮定します。
(環境は明記すべき)
TextBoxのKeyDownイベントを追加し、以下のようなコードを記述してみてはどうでしょうか?
if (e->KeyCode == Keys::Enter) {
if (!e->Control) {
this->SelectNextControl(static_cast<Control^>(sender), ! e->Shift, true, true, true);
}
}
※全角空白は半角空白等に置換してください。
投稿日時 - 2009-01-09 10:33:35
お礼
ご回答ありがとうございます。
環境を明記していないことを反省しております。
VC++2008 CLR フォームにて、プログラムしております。
chie65535さんのお礼にも書きましたが、考え方の参考になりましたので、TextBoxのイベントを利用して考えてみます。
ご回答ありがとうございました。
投稿日時 - 2009-01-09 11:58:24
1人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
>TextBoxのプロパティの設定方法とを教えて下さい。
プロパティでは出来ません。
TextBoxにWM_KEYDOWNイベントが来た時の処理を変更し、押されたキーがVK_ENTERだったら、押されたキーをVK_TABに変えて処理させて下さい。
具体的には、TextBoxのWndProcを以下のようにします。
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (((message == WM_KEYDOWN) || (message == WM_KEYUP)) && (wParam == VK_ENTER)) {
wParam = VK_TAB;
}
/*デフォルトのメッセージ処理ルーチン*/
return DefWindowProc(hwnd, message, wParam, lParam);
}
投稿日時 - 2009-01-09 10:17:28
お礼
ご回答ありがとうございます。
後に回答を頂いた bluecampus さんのご指摘にありました環境を明記していないことを反省しております。
現在VC++2008の CLRで、プログラミングしております。
ご回答頂いた、そのままをテストしていませんが、考え方がわかりましたので、VC++2008 CLR環境にて、どうやるか頑張ってみます。
ご回答ありがとうございました。
投稿日時 - 2009-01-09 11:52:53