• ベストアンサー

フォーカスについて

bin-chanの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

コマンドボタンのプロパティに[Default]という項目があります。 (初期値はfalseになってます) こいつをTrueにすればフォーム上での[Enter]押下をClickイベントが受け取ります。 ボタンに「影」が付きますからよく見てね。 反対にEscを押下した際にClickイベントを発生させるのは プロパティ[Cansel]。 要するに「はい」「いいえ」のようなフォームの場合に、どちらを「主」とするか、 のような設定方法です。 > 並んであるコマンドボタンにフォーカスを移動させたいのですが アクセスキーを利用した方が簡単でしょう。 Alt+(指定の文字)でフォーカスが移動します。 やり方はCaptionに&(指定の文字)とするだけ。 実行(E) (←カッコ内のEには下線が付く)の場合なら Captionに 実行(&E)と記述するだけでOK。 見栄えがしますよ!

tetudamon
質問者

お礼

大変お礼が遅くなりました。申し訳ございません。 何とか、解決いたしました。 これからも、何かありましたらよろしくお願いします

関連するQ&A

  • コマンドボタンのEnterイベント後に、フォーカスを移動したい。

    コマンドボタンのEnterイベント後に、フォーカスを移動したい。 フォームに「TextBox1」(TabIndex=0)「TextBox2」(TabIndex=1)「CommandButton1」(TabIndex=2)の3つのコントロールがある場合。 CommandButton1がクリックされた場合も、TextBox2からCommandButton1に、タブキーまたはエンターキーで、フォーカスが移った場合にも、同じ処理を行い、処理結果によってTextBox1やTextBox2にフォーカスを移したいと考えています。 以下のようなサンプルを作成しました。 Private Sub CommandButton1_Enter() CommandButton1_Click End Sub Private Sub CommandButton1_Click() MsgBox ("OK") TextBox2.SetFocus End Sub この場合、CommandButton1_Enterのイベントが起こった場合、CommandButton1_Click()のTextBox2.SetFocusは効きません。 (正確には、CommandButton1_Enterイベントが終わった時点で無効でしょうか。) Enterイベントは、フォーカスが移動する前に発生するため、このイベントが終わった後に、そもそもの動作に戻り、フォーカス移動が発生してしまうからなのだと思っております。 要は、コマンドボタンにタブキーやエンターキーでフォーカスしても、コマンドボタンをクリックしたのと同じ処理を行い、所定の位置にフォーカスを持っていきたいのですが、どのように行えば良いか、わからない状況です。 よろしくお願いいたします。

  • ダイアログのデフォルトフォーカス

    XPの時はボタンなどにフォーカスが当たっていてENTERキーを押していました win7になってから、ボタンにフォーカスがあたってなく、どうしてもマウスでクリックしなければならず、スピード感が鈍ります。 XPの時代のようなフォーカスの当たり方ができるようにする方法がわかれば教えてください

  • フォーカスの移動

    IMEソフトキーボードのようなものを作っています。 フォーム1にテキストボックスがあり、フォーム2をソフトキーボード。というように作りたいと思っているのですが問題があります。 コマンドボタンを押すごとに1文字ずつ送るような作りになっているのですが、1文字ごとにテキストボックスからコマンドボタンにフォーカスが移るため、2文字以上の文字列の変換ができないのです。VB的に無理なのかもしれないですが、IMEソフトキーボードのようにテキストボックスにフォーカスをセットしたままの文字入力を出来ないでしょうか?ちなみにkeybd_eventを使っています。 時間がありましたら、ご教授のほどよろしくお願いします。

  • TabIndexを使わないで、フォーカスの移動

    ご多忙中大変申し訳ありません。 VBの初心者です。 TabIndexを使わないで、コントロールの名前の番号でフォーカスの移動をしたいのですが、私のレベルでは全くできません。 TextBox1、TextBox2、TextBox3、TextBox3、~TextBox15 のようにTextBoxの後ろに付いている、数字を利用してフォーカスの移動をしたいと思っております。 実装前に下記のようなコードを書いてテストしていますが、どこを調べても、また試行錯誤を繰り返してもできません。 Public Class Form1 'テスト Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.KeyPreview = True '1列目TextBoxの生成 Dim i As Integer For i = 0 To 4 Dim txtbx As New TextBox txtbx.Size = New Size(105, 30) txtbx.Location = New Point(50, 50 + i * 40) txtbx.Font = New Font("MSゴシック", 12, FontStyle.Regular) txtbx.TabIndex = i * 3 txtbx.Text = "TabIndexは" & CStr(i * 3) txtbx.Name = "TextBox" & CStr(i + 1) Me.Controls.Add(txtbx) Next '2列目TextBoxの生成 For i = 0 To 4 Dim txtbx As New TextBox txtbx.Size = New Size(105, 30) txtbx.Location = New Point(160, 50 + i * 40) txtbx.Font = New Font("MSゴシック", 12, FontStyle.Regular) txtbx.TabIndex = i * 3 + 1 txtbx.Text = "TabIndexは" & CStr(i * 3 + 1) txtbx.Name = "TextBox" & CStr(i + 6) Me.Controls.Add(txtbx) Next '3列目TextBoxの生成 For i = 0 To 4 Dim txtbx As New TextBox txtbx.Size = New Size(105, 30) txtbx.Location = New Point(270, 50 + i * 40) txtbx.Font = New Font("MSゴシック", 12, FontStyle.Regular) txtbx.TabIndex = i * 3 + 2 txtbx.Text = "TabIndexは" & CStr(i * 3 + 2) txtbx.Name = "TextBox" & CStr(i + 11) Me.Controls.Add(txtbx) Next End Sub Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If e.KeyCode = Keys.Right Then '→キーによるフォーカスの移動 Me.SelectNextControl(ActiveControl, True, True, True, False) e.Handled = True ElseIf e.KeyCode = Keys.Left Then '←キーによるフォーカスの移動 Me.SelectNextControl(ActiveControl, False, True, True, False) e.Handled = True End If '↓(Down)キーによるフォーカスの移動  ここができません。 If e.KeyCode = Keys.Down Then Dim txtboxname As String txtboxname = Me.ActiveControl.Name 'TextBoxの名前の名前の取得 Dim txtbxnum As String txtbxnum = txtboxname.Remove(0, 7) 'TextBox~の名前から、~(数字)だけにする。 Dim controlName As String controlName = "TextBox" & CStr((CInt(txtbxnum) + 1)) 'TextBox~の名前の~に1を足す。 Me.Controls(controlName).Select() 'TextBox~+1のTextBoxをフォーカス 'Select() Focus()も結果は同じです。 End If '↑(Down)キーによるフォーカスの移動 'この部分は、↓(Down)キーによるフォーカスの移動が出来るようになりましたら、追加します End Sub ' Enterキーによるフォーカスの移動 Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress If e.KeyChar = Chr(Keys.Enter) Then Me.SelectNextControl(ActiveControl, True, True, True, True) e.Handled = True End If End Sub End Class 最終的な目的の動作は、EnterキーではTabIndexの順番にフォーカスの移動。 ←キーでは、左にフォーカスの移動。 →キーでは、右にフォーカスの移動。 ↑キーでは、上にフォーカスの移動。 ↓キーでは、下にフォーカスの移動。 コントロールの名前の番号でフォーカスの移動をしたい理由は、 Enterキーと←、→キーによるフォーカスの移動でTabIndexの順番を使い、上下方向、↑キー、↓キー移動には、TabIndexの順番が画像のように少々複雑になってしまい、TabIndexを使用してのフォーカスの移動は断念しました。 もし、TabIndexでフォーカスの移動が出来るようなら、そちらのほうでもかまいません。 使用バージョンは、VB2010 Express Edition です。 ご迷惑を、おかけしますが、どうかご助力をお願いいたします。

  • キーボードでコマンドボタンを押せるようにするには?

    ExcelのVBAで3択クイズを作っていて、ユーザーフォーム上で解答選択支が表示されている コマンドボタンが3つあって、 そのどれかをクリックすると正解か不正解の表示が出る仕組みのプログラムを作ったのですが、 スムーズに選択できるようキーボードでコマンドボタンを押せるようにしたいのです。 左キーを押すとコマンドボタン1、上キーを押すとコマンドボタン2、右キーを押すとコマンドボタン3 が反応するといった感じにしたいのです。 いろんなサイトを見て回ったのですがAPIのGetAsyncKeyStateという関数を使うというところまでは 分かったのですが素人なものでそこから先を何を記述すべきか分からなくて困っています。 いろいろためしたものの反応がしなくて分からないです。 なにかいい方法はありませんか?

  • ボタンのみにフォーカスを合わせたい。

    ボタンのみにフォーカスを合わせたい。 フォーム上に動的に作成したボタンをキー入力だけで操作したいのですが、方向キーを使ってカーソルを移動させるとどのボタンにもフォーカスが合わなくなります。 →キーを押してカーソルを移動させていくと端のボタンの上で→キーを押すとどこかへいってしまいます。 ■ □ □  □ ■ □ □ □ ■ □ □ □ よろしくお願いします。

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

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

  • フォーカスが最初に戻る

    現在ASP.NETでWebページを作成してるのですが、Tab移動でラジオボタンに移動して、矢印キーでラジオボタンの選択を変えるとフォーカスがURLが表示されている部分に戻ってしまうのですが、これを回避する方法は、ありませんか?

  • コマンドボタンについて、、、

    おはようございます。 度重なる相談で申し訳ありません、、、 コマンドボタンにフォーカスを合わし、Enterキーを押すとコマンドボタンの内容を実行できるまではできました。しかし、Enterキーを押しても、コマンドボタンは凹まない状態なんです。 Enterキーを押して凹ますには、どんな制御が必要なのでしょうか?是非、アドバイスを下さい。 よろしくお願いします。 ** 環境 ** VB6.0sp5 Win98 IE5.5

  • ExcelVBA フォーカスの移動

    Excel2003を使用しています。 シートに画面を作成したのですが 1点ちょっとわからないことがあります。 例えばある項目(セル)にフォーカスがある状態で 「Enterキー」を押下したとします。 そこで特定のセルにフォーカスを移動させることは 可能なのでしょうか?。 VB6だと指定出来たような気がしたのですが・・ すみませんがアドバイスお願いします。