• 締切済み

ユーザコントロールでのEnterキータブ移動

開発言語:VS2008・C# VS2008・C#で郵便番号や電話番号を入力できるユーザコントロールを作成しています。 入力フィールドはTEXTBOX、区切り文字はLABELで、 郵便番号なら3桁 + 区切り文字(-) + 4桁 電話番号なら3桁 + 区切り文字(-) + 4桁 + 区切り文字(-) + 4桁 といった感じで、プロパティで設定された値により、動的に入力フィールドのTEXTBOXを作成しています。 上記のユーザコントロールをフォームに配置し、ENTERキーでフォーカスを移動させたいのですが、現時点で、ユーザコントロール内のTEXTBOXでENTERを押した場合フォーカスはユーザコントロール内の次のTEXTBOXに移動するのですが、最後のTEXTBOXでENTERキーを押した場合ユーザコントロールからフォーカスが移動しなくなってしまいます。 例)住所フィールド(TEXTBOX)→ENTER押下→郵便番号(ユーザコントロール)の上3桁フィールド→ENTER押下→郵便番号(ユーザコントロール)の下4桁フィールド→ENTER押下(フォーカスが次のコントロールに移動しない) ユーザコントロール内のENTERキー移動はKeyDownイベントに関連付け行っていますが、これだとユーザコントロール内しかENTERでフォーカスが移動せずフォーム上の次のコントロールにフォーカスが移動しません。 どなたか、ENTERキーでユーザコントロールからフォーカスが移動できる方法を教えてください。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

KeyEventargsのSuppressKeyPressをtrueに設定してみてください 当方のWinXP Pro SP3では 警告音が鳴らないみたいですが ・・・

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

下4桁のKeyDownイベントを if ( e.KeyValue == 13 ) {   e.Handled = true;   this.Parent.GetNetxtControl( this, true ); } といった具合に 親の中で次のコントロールといった具合に呼び出してやればいいように思います

gi03158
質問者

お礼

ご回答ありがとうございます。 上記方法を参考に下4桁のKeyDownイベントに処理を加えたところ解決しました。 追加で質問なのですが、ENTERでタブ移動した際、警告音が鳴ってしまいます。各KeyDownイベント後にe.Handled = true;にしているのですが。それでも警告音が消えません。対応法など知っていましたら御教授願います。

関連するQ&A