• 締切済み

VB.NET ボタン押下で一つ前のコントロールへ

お世話になります。 VisualStudio2010 InputMan6.0 上記を使用して、VB.NETで開発をしております。 いくつかテキスト・コンボコントロールが並んでいるFormで、ボタンを押下することで それまでカーソルがあったコントロールの一つ前のTabIndexがあるコントロールへ カーソルを遷移させたいのですが、うまく動きません。 SelectNextControlを使ってみても、ボタン押下の段階でボタンがActiveなコントロールと なってしまうため、ボタンの一つ前のコントロールにカーソルが移動してしまいます。 うまい方法はないでしょうか?

みんなの回答

  • FoolWord
  • ベストアンサー率73% (14/19)
回答No.1

こんな感じでどうでしょう。 1.フォーカス制御しないコントロールのTabStopをFalse 2.フォーカス制御を行うコントロールのLeaveイベントの引数senderを記憶 3.ボタンクリックでSelectNextControlを使って、フォーカス制御 -------------- サンプル -------------- ' 記憶用コントロール変数 Private c as Control ' フォーカス移動した時のコントロールを記憶 Private Sub Lost_Focus(sender As object, e As System.EventArgs) c = CType(sender, Control) End Sub Private Sub Form1_Load(引数省略) AddHandler フォーカス対象コントロール.Leave, AddressOf Lost_Focus    .    .    . AddHandler フォーカス対象コントロール.Leave, AddressOf Lost_Focus End Sub ' ボタンクリックでフォーカス移動 Private Sub Button1_Click(引数省略) Me.SelectNextControl(c, False, True, True, True, True) End Sub ' ボタンクリックでフォーカス前移動 Private Sub Button2_Click(引数省略) Me.SelectNextControl(c, True, True, True, True, True) End Sub

関連するQ&A

  • 【VB2005】ゲーム開発について

    ちょっとゲーム開発なんて大げさに書いてみました。 もし、VBでゲームを作成するにあたって、 たとえば、画面遷移をスムーズに切り替えできないか?と 考えてます。 簡単に、画面遷移を、下記のような流れにしたいと 考えます。 1:ゲームタイトル画面 2:ゲーム画面 3:ゲーム保存画面 この3つの画面があるとして、 1)のタイトル画面で、ボタンを押下して 2)のゲーム画面に遷移する際にVBだと どのようにすればゲームタイトルから ゲーム画面にスムーズに画面遷移するのか 悩んでます。 Form1から、Form2を開く方法など 画面のシーンごとに管理できて楽だと考えたのですが、 いったんForm1を閉じてForm2を表示するとかじゃなくて Form1からForm2をスムーズに表示する方法など あれば、そういうのを使いたいと考えてます。 長くなりましたが、コツコツと 画面遷移ごとに使うコントロールを モジュールで管理して、表示に必要な コントロールを都度、表示、非表示、 座標などのプロパティを設定する方法が一般的なのでしょうか? どなた教えてください。

  • VB.NET 画面遷移

    VB.NET2005にて開発してます。 画面遷移で困ってます。 親画面にボタンが複数ありボタンから各子画面へ遷移するのは問題ないのですが、 子画面同士で画面遷移させたい場合オーナーという概念がないため遷移前画面の操作が出来ません。 publicで子画面FORMを宣言するなどすれば良いのでしょうか? それ良いならその方法を教えてください。 違うならその他方法を教えてください。 VB.NETは全くの初心者なので分かりやすくお願い申し上げます。

  • ASP.NET/VBでのユーザコントロールを使用したプログラム

    開発環境:VS2005 言語:ASP.NET(VB) 質問させてください。 現在ASP.NETでプログラムを作っています。 プログラム等は経験なくほぼ初心者です。 内容としては テキストボックス(txtB)1個のユーザコントロールを ボタン(btn1)1個とテキストボックス(txtA)1個のフォーム(aspx)に貼り付け、 ボタンを押下することでフォームのテキストボックス内の値を ユーザコントロールのテキストボックスに表示させるという プログラムを作りたいのですがうまくいきません。 色々調べたのですが、 ユーザコントロールのテキスト内の値をフォームのテキストに表示させる方法は あったのですが逆の方法は見つけられませんでした。 説明等わかりにくいところもあるかもしれませんが 回答よろしくお願いいたします。

  • コントロールの使い方が分らないのですが

    今VBを使ったアプリケーションを開発していますが、 VBの標準以外のコントロールの使い方や特性が分らず困っています。 使用しているコントロールツールは 「ActiveThreeDPlus」・「InputMan65」・「SPREAD30」の3種類です。 あと帳票ソフトで「Crystal Reports ver8.5」を使っています。 これらの使用方法や特性などが理解できるものがすぐにほしいのですが、 どなたか知っている方いらっしゃいませんでしょうか? どうか宜しくお願い致します。

  • CheckBoxをボタン形式にして押下した時、背景色を変化させない方法

    VBのCheckBoxをボタン形式にして押下すると、背景色が薄くなります。 これを、押下しても薄くならない方法を探しているのですが、うまく 見つけることができません。 もし、ご存知の方がいましたら、教えていただけないでしょうか? よろしくお願いします。 開発環境 VB6.0 Windows XP

  • asp.net 言語はVB 画面のボタン押下にてメモ帳を起動したい

    お世話になっております。 ASP.NET 言語:VBにて開発中です 画面にてボタン押下処理で クライアントのメモ帳を開くことは可能ですか? VB.NETだとShellで出来そうなんですが・・・ クライアントの処理となるとJavaScriptで行うのかな? と思いますが知識不足で混迷中です。 ご存知の方教えてください。 以上 よろしくお願いいたします。

  • TabIndex順にタブ移動しない・・

    VB.NETです。 TextBoxなどのTabIndexに0~35までのTabIndex番号を付けていますが、タブ移動させたときに何故かTabIndex番号順に進んでくれません。 実行させた際に、最初にカーソルのある位置が、TabIndex=15のTextBoxになってしまっています。 そこからタブ移動させると、15, 16, 17, 18, ・・・・・・35まで進み、次は頭から(TabIndex=0)から進んで、TabIndex=14で止まります。 タブ止めは、以下の質問で解決し、実現しています。 http://okweb.jp/kotaeru.php3?q=1377546 最初は、正常にタブ移動(0~35)していたのですが、TextBoxを移動させたり作り直したり再編集しているうちに、気づくとおかしな動きになっていました。 ちなみに、TabIndex0~14までのタブは、Container1上に貼り付けて、TabIndex15~35までのタブは、Container2上に貼り付けています。 Containerも、TextBoxも、Form1上にあります。 原因がわかる方いらっしゃいましたら、アドバイスいただけると助かります。 ※Containerとは、InputManのカスタムコントロールで、標準のPanelコントロールの高機能版みたいなものです。

  • VB(6.0)上でファンクションキーを押下出来ない

    VB(6.0)を使用して開発されたプログラムを改定しています。 画面上にボタンが配置されファンクションキーをF1~F12まで 割り当てています。 その中であるFoamだけF3,F5を押下するとプログラムが 強制終了されてしまいます。 マウスでクリックすると問題なく処理されます。 また別の画面ではF1~F12まで問題なく押下出来ます。 原因が分かりません。コーディングで対応出来るものでしょうか。 ご指導よろしくお願いいたします。

  • 【VB.NET】カスタムコントロールのプロパティ

    お世話になっております カスタムコントロールのプロパティについて質問です InputManのGcTextBoxを継承したカスタムコントロールを作成しました。 カスタムコントロールにはPublicのプロパティがあり、その中で必要がなくなったプロパティがあるため削除しました。 しかし、削除するとカスタムコントロールを使用しているFormのDesignerファイルで多数のエラーが出ており、見てみると削除したプロパティの設定が残っていました。 designerファイルを一つ一つ開いて消そうと思いましたが、かなり多いため非常に手間がかかります。 そこで相談なんですが、なにか一括、もしくは自動で消す方法等あればご教授願います。 ちなみに環境はVisualStudio2008でコントロールはInputMan for Windows Forms 6.0jを使用しています。

  • 1つ前のフォーカスのあったコントロールの取得

    C#で1つ前のフォーカスのあったコントロールの取得方法がわかりません。 ボタンを押下して、1つ前にフォーカスのあったテキストボックスに文字列を表示させたいです。 わかる方いらっしゃいましたらよろしくお願いします。

専門家に質問してみよう