• ベストアンサー

ユーザーコントロールについて

 コマンドボタン(cmd1,cmd2,cmd3)を3つ配置したユーザーコントロール(読み取り専用)をフォーム上(form)に配置し、ロードしたとき一番初めにフォーカスがあたるのがcmd1なのですが、これをcmd2にフォーカスを与えたいのです。ユーザーコントロールのタブインデックスはコマンドボタンの名前どおりなのですが、tabキーを動かすことと同じ関数みたいなものはあるのでしょうか?

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

  • ベストアンサー
  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.5

フォーカスは表示されていないと指定できないので、 Form_Load()で以下の様にしてみては如何でしょうか。 Private Sub Form_Loas()   Show  '… (1)   UserControl.SetFocus  '… (2)   SendKeys "{TAB}", True  '… (3) End Sub (1)フォームを表示する。 (2)ユーザーコントロールにフォーカスを移す。 (3)必要数分タブを移動する。 ※コマンドボタン(cmd1,cmd2,cmd3)を3つ配置したユーザーコントロールを配置していると仮定して 上記、サンプルでは、cmd2へフォーカスが設定される。

guruguru2
質問者

お礼

ありがとうございます!! とても助かりました。

その他の回答 (4)

回答No.4

#3の回答が一番妥当とは思うんですが、 ユーザーコントロールというのは何を指しているんでしょうか? (もしかしてEXCEL?) Tabキーを実行したいだけなら、 「Sendkeys」をヘルプで調べてみて下さい

guruguru2
質問者

お礼

「Sendkeys」使わせていただきました。 ありがとうございます。

guruguru2
質問者

補足

ユーザーコントロールとは ユーザーが自分で作ることが出来るコントロールです(まんま…) 例えば、今回私が質問させていただいたような、コマンドボタン3つで一つのコントロールの役目をもっている。 ようなことです。(わかりづらいかも…) もちろんそのユーザーコントロール独特のプロパティやメソッドも自分で作る(というか普通にプログラム書くだけですけど)ことができるのです。

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.3

SetFocusメソッドを使ってください。(cmd2.SetFocus) http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_v08.htm

参考URL:
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_v08.htm
guruguru2
質問者

補足

ユーザーコントロールにフォーカスをセットすること(自動的にcmd1)は出来るのですが、 その中のコマンドボタン自体にフォーカスを(cmd2.SetFocus)を割り当てる方法がわからないのです。(; ;) フォーム自体にcmd2が割り当てられているわけではないのでcmd2.SetFocusは使えなかったのです。

回答No.2

もし VB6なら コマンドボタンのプロパティ cmd2のtabindexを0にすればいいと思います。

guruguru2
質問者

補足

すいません。 質問にも書いた通りユーザーコントロールが 読取専用で他の人も使っているのでプロパティそのものを いじってしまうわけにはいかないのです。

回答No.1

VB.netですか VB6ですか? VB.net なら cmd.Select() でどうでしょうか?

guruguru2
質問者

補足

失礼しました。VB6です。

関連するQ&A

  • VB6 ユーザーコントロールのフォーカス無効

    現在VB6 SP5にて、テンキーのようなユーザーコントロールを作成しています。 コマンドボタンを配置し、押された場合にキーボードの入力をエミュレートするような作りにしています。 問題は、作成したコントロールをフォームに貼り付けて使用する場合に、マウスでクリックしたキーに応じて、現在フォーカスのあるテキストボックスなどに入力したいのですが、ユーザーコントロールのコマンドボタンにフォーカスが移ってしまい、うまくいきません。 ユーザーコントロールのCanGetFocusプロパティをFalseに設定しようとすると、「フォーカスを取得できないコントロール上に配置された子コントロールは、フォーカスを取得することができません。」とエラーが表示されてFalseにできません。 フォーカスを無効にし、このような機能を実現するには何か良い方法ありますでしょうか?

  • .Net ユーザーコントロールのイベント

    質問させていただきます。 環境はVB.NET2003 WindowsXPです。 あるユーザーコントロール(Form)にボタンが用意されており、そのユーザーコントロールを別のフォームAに貼り付けたとします。 この時、Aのコード内でユーザーコントロール上のボタンのClickイベントを取得する方法がございましたら、回答をよろしくお願いします。

  • C# ユーザコントロール内のボタン押下を親で知る

    こんにちは。ユーザーコントロール内のボタンをクリックした時、そのユーザーコントロールをおいている親フォーム側で、それを知るにはどのようにすればよいでしょうか? ---------------------------------------------------------------------- [Form1.cs] void Inform_UserControlButton1Click() { //親が持っている変数を使って処理を行いたい } void Form1_Load(....) { //ユーザコントロールを設置 UserControl1 ctrl = new UserControl1(); this.Controls.Add(ctrl);   //ユーザコントロール内のbutton1を見つける List<Control> ctrl = new List<Control>(cps.Controls.Find("button1", false)); //Form1が持っている変数を使う為の関数を通るようにしたい (Button)ctrl[0].Click += new System.EventHandler(Inform_UserControlButton1Click); //←エラー } ---------------------------------------------------------------------- [UserControl.cs] button1が配置されています。 ---------------------------------------------------------------------- こんな感じにしてできないかなー?と思っていたのですが、//←エラーのところで、 イベント 'System.Windows.Forms.Control.Click' は += または -= の左側にのみ表示されます。 となってしまい上手くいきません。 どのようにすればよいでしょうか?

  • ユーザーフォームが表示前にエラーになります。

    お世話になります。 Excelのシート上にコマンドボタンを配置して それをクリックするとユーザーフォームが表示されるようにしたいのですが、下記のコードだと「フォーカスがありません」と1行目でエラーで止まってしまいます。 解決方法を教えてください。 Private Sub コマンドボタン_Click() ユーザーフォーム.Show End Sub よろしくお願いします!

  • ユーザーフォーム

    エクセルでユーザーフォーム上にコマンドボタンを配置し、特定のコマンドボタンを押した時に、他のユーザーフォームを呼び出せるようにしたいのですが、どうしたらいいのでしょうか。

  • フェオームコントロールとActiveXコントロール

    VBAについての質問です。 Excel2013を使っています。次のような場合に不具合があります。 sheet1上にフェオームコントロールのボタンを配置し、ユーザーフォームを呼び出します。 ユーザーフォームにはコマンドボタンを配置し、コードは Worksheets("Sheet2").Select です。 実行すると、Sheet2に画面は変わりますが、セルに何かを入力すると、入力したはずのものがすぐ 消えて、しまいます。スクロールもできません。 実際には Sheet1 に入力されています。 sheet1上のボタンをActiveXコントロールのコマンドボタンを使用して、同じユーザーフォームを呼び出し実行すると、正常に作動します。 この現象は、2010以前のバージョンだと、どちらも同じ動作をすると思います。すべてを調べたわけではありませんが。 12月10日(水)の更新後、Excel2013ではActiveXコントロールのコマンドボタンが使用できなくなったと思いますが、VBAに詳しい方で、何か解決策をご存じの方、アドバイスをお願いします。

  • ユーザーがクリックするまでフォーカスをつけない方法(Access VBA)

    こんにちは。 AccessVBAですが、ユーザーフォーム上で、 ユーザーが、コントロールをクリックするまで、 フォーカスを設定しない方法は、あるでしょうか。 テキストにフォーカスされたときの黒反転が、 綺麗でないので、フォーカスさせたくありません。 フォームを開いたときに、強引にボタンにフォーカス する、方法もありますが、ボタンのないフォーム ですと、この方法が使えません。 何か、いい方法がありましたら、教えてください。 お願いします。

  • ユーザコントロールでの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キーでユーザコントロールからフォーカスが移動できる方法を教えてください。

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

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

  • カスタムコントロール(ユーザーコントロール)について

    こんにちわ。 例えば、Visual Basic.NETにて、 カスタムコントロール1、カスタムコントロール2・・・etcと、幾つかのカスタムコントロールを作成しておいて、 プログラムの実行時に、フォーム上に配置されたボタン1をクリックすると、フォームにカスタムコントロール1が継承されて配置される、 と言った内容のプログラムを作成したいと考えています。 とはいえ、そのようなことが実際に可能なのかどうかもわかりませんし、そもそもカスタムコントロールの作成方法も理解していません。 そこで、カスタムコントロールの作成からその利用に至るまでを易しく解説してくれているような書籍等がございましたら、教えていただけないでしょうか? よろしくお願いいたします。