- ベストアンサー
VC++ で TextBoxから、次のコントロールに移動する方法について
VC++で、フォーム上に複数のTextBoxを配置して、タブインデックスで、次に移動したいTextBoxを設定しました。 最初のTextBoxに入力した後、Tabキーで、次のコントロールに移動することはできましたが、Enterキーで次のコントロールへ移動することはできないのでしょうか? TextBoxのプロパティの設定方法とを教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
※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); } } ※全角空白は半角空白等に置換してください。
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8799/19955)
>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); }
お礼
ご回答ありがとうございます。 後に回答を頂いた bluecampus さんのご指摘にありました環境を明記していないことを反省しております。 現在VC++2008の CLRで、プログラミングしております。 ご回答頂いた、そのままをテストしていませんが、考え方がわかりましたので、VC++2008 CLR環境にて、どうやるか頑張ってみます。 ご回答ありがとうございました。
お礼
ご回答ありがとうございます。 環境を明記していないことを反省しております。 VC++2008 CLR フォームにて、プログラムしております。 chie65535さんのお礼にも書きましたが、考え方の参考になりましたので、TextBoxのイベントを利用して考えてみます。 ご回答ありがとうございました。