VC++ で TextBoxから、次のコントロールに移動する方法について

解決済みの質問

VC++ で TextBoxから、次のコントロールに移動する方法について

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

投稿日時 - 2009-01-08 17:58:10

連想キーワード:

QNo.4614145

すぐに回答ほしいです

質問者が選んだベストアンサー

※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

ANo.2

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(1件中 1~1件目)

ANo.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

あわせてチェックしたい
  • ユーザコントロールでのEnterキータブ移動 ...
  • VC++6.0 エディットボックス、スピンコントロールについての質問 ...
  • VCのコントロール最大配置数は? ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら