電子書籍の厳選無料作品が豊富!

VC++で、フォーム上に複数のTextBoxを配置して、タブインデックスで、次に移動したいTextBoxを設定しました。
最初のTextBoxに入力した後、Tabキーで、次のコントロールに移動することはできましたが、Enterキーで次のコントロールへ移動することはできないのでしょうか?
TextBoxのプロパティの設定方法とを教えて下さい。

A 回答 (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);
  }
}
※全角空白は半角空白等に置換してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
環境を明記していないことを反省しております。
VC++2008 CLR フォームにて、プログラムしております。
chie65535さんのお礼にも書きましたが、考え方の参考になりましたので、TextBoxのイベントを利用して考えてみます。

ご回答ありがとうございました。

お礼日時:2009/01/09 11:58

>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);
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
後に回答を頂いた bluecampus さんのご指摘にありました環境を明記していないことを反省しております。
現在VC++2008の CLRで、プログラミングしております。

ご回答頂いた、そのままをテストしていませんが、考え方がわかりましたので、VC++2008 CLR環境にて、どうやるか頑張ってみます。
ご回答ありがとうございました。

お礼日時:2009/01/09 11:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています