• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#かVB DataGridView)

C#かVBでDataGridViewのフォーカス制御方法

このQ&Aのポイント
  • C#かVBでDataGridViewを使用していて、複数のDataGridViewがある場合、フォーカスがあるDataGridViewにのみフォーカスを表示させたいです。現在はDataGridViewごとにフォーカスが残っており、自然ではありません。
  • 私はDataGridViewを使用しており、DataGridView(1)には1~10の列、DataGridView(2)には11~20の列、DataGridView(3)には21~28の列があります。現在はEnterキーを連打して1~28まで移動していますが、各グリッドにフォーカスが残っており、不自然です。
  • DataGridViewを使用している際に、フォーカスがあるDataGridViewのみにフォーカスを表示する方法を教えてください。現在はDataGridViewを移動するたびに全てのグリッドにフォーカスが残っており、違和感があります。

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

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

検索すればすぐにサンプルが引っ掛かるレベルの 内容ですね。 http://www.atmarkit.co.jp/fdotnet/dotnettips/512dgvcurrent/dgvcurrent.html

minaraiH
質問者

お礼

ありがとうございました。検索するのもそう簡単じゃないっす。キーワードがわかってれば いいけどね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DataGridViewで…

    初めまして、VB2005初心者のココと申します。 今、VB2005を使い開発しているのですが、詰まってしまいました。 初心者の為、くだらない内容かも知れませんが、ご教授よろしくお願いいたします。 セルに入力されたコードを元にDBから名称を抽出し、名称欄(セル)に表示するプログラムを作っています。 コードを入力し、セルからフォーカスが無くなった際に自動的に名称を表示させたいのですが、うまく表示されず、 現在は、別のセルから戻った後、フォーカスが移動されると表示されるような感じになってしまっています。 フォーカスが離れた際に、表示させればいいと思うのですが、どのようにすればいいのかよく分からず困っております。 今は、CellLeaveを使用しています。 Private Sub DataGridView1_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _ Handles DataGridView1.CellLeave 後、名称取得の際はこんな感じにしています。 名称取得(Val(DataGridView1(1, DataGridView1.CurrentCell.RowIndex).Value)) ※1がコードを入力する列になります。 よろしくお願いいたします。

  • VB2008 DataGridView セル移動キャンセル

    VB2008 DataGridView セル移動キャンセル いつもお世話になってます。 Windows7 VB2008で現在開発しております。 画面にDataGridVIewと2つのボタン(更新、終了)がはっつけてあります。 列にはID、パスワード、名前、生年月日、性別があるとします。 やりたい事は IDを入力しセルからフォーカスが離れるとDBを参照し 登録されているIDの場合では他の項目を出力させますが 登録されていないIDの場合には「未登録」とメッセージ表示させ、 フォーカスは入力したセルのまま、というように動作させたいんです。 フォーカス移動をキャンセルしたいのでCellValidatingイベントで記述してますが 終了ボタンを押そうとフォーカスがセルから離れた瞬間メッセージ出力で ボタンから画面が閉じれなくなりました。 CellValidatingに記述してるのは以下みたいな感じです。 Private Sub DataGridView_CellValidating(Byval sender As ~, Byval e As ~) … ・・・ If Not ID登録チェック関数 Then MsgBox("未登録") e.Cancel = True End If ・・・ End Sub これってどう回避しますか? それか、使ってるイベントがよろしくないんでしょうか?

  • VB2010のDataGridViewについて

    VB初心者です。 VisualBasic2010のDataGridViewの表示についての質問です。 DataGridViewは通常、行単位でデータを管理する形式になっていますが、 行と列を逆にして操作したいのです。 古いバージョンのVBではコントロール右上のマークをクリックするとタスクが出てきてそこで設定できるようなのですが、VB2010ではタスクの中の操作がなくなっています。 もし、VB2010でも設定する方法があるのでしたら教えてください。 古いバージョンのVBで行と列の入れ換えを行っているサイトがあるので参考までに↓ http://d.hatena.ne.jp/Yamaki/20091214/1260767140

  • VB2005 DataGridViewでの非バインド文字列のこと

    VB2005でDataGridViewを使ってプログラムをしているのですが。  DataTableとBiding(リンク?)しているDataGridViewで。 DataTableとバインドしてない項目X(非バインド列)をDataGridViewに新たに追加して。 例えば、DataTableの項目Yが1だと項目Xも1という風に表示させたいのですが。 一度目はうまく表示されるのですが。その画面を閉じてまた開いたら表示されないのですが。 どうしたら良いでしょうか?アドバイスをお願いします。 開発環境: XinXP Pro SQL Server2005 Express VS2005 Pro VB2005

  • DataGridViewのTEXT編集について

    VB.NETのDataGridViewのTEXT編集において、cellにフォーカスが移動した際、直ちに編集状態に入る(Excelの様な使い方)例・方法をご存知でしたら、ご教授お願いいたします。

  • DataGridViewでの追加行の表示について

    VB2005で作成。 DataGridViewを非バインドで作成しました。 追加行のプロパティもtrueにしています。 通常そのまま作成すると新規行が1行だけ空白表示で その下はグレーで何もない状態です。 画面いっぱい(グリッドの画面)にグリッドの行の枠を 表示してほしいとの要望がありました。 つまりデフォルトでグリッドの画面いっぱいにexcel表示のように グリッドの枠を表示してどこからでも入力できるほうが良い ということを言われました。 それが設定か何かをするだけで、簡単できると 思っているので調べてますが、方法が まったく見つからない状態で困っています。 わたしは無理なんじゃないの?と思ってます。 考えているのは、 ・自分である程度の行を最初に無理やり追加して  その行数でイベント(削除、追加、データ保存時など)で  コントロールする。手間がかかりますが仕方ない。 ・設定するプロパティがある(ぜひご教授ください) ・他に回避策がある。(ぜひご教授ください) ・有料のツールにあれば買う。(今あるもので済ませたいので避けたい) 何か良い方法がないでしょうか?よろしくお願いします。

  • DataGridViewの複数の指定行を取込には

    Win2003SERVER(R2)+SRLServer2000+VB.NET2008の 組合せでやっています。 VBは初心者です。 今、DataGridView1で下記の様なデーターがフォームに 表示されています。 A B C 1 11 AAA 2 22 BBB 3 33 CCC 5 55 DDD 6 66 EEE この画面でCtrlキーを押しながら Aの列の 1 3 5の列を選択しました。 その状態でBotan1を押したとき Bの列の 11 33 55 を変数 B(1) B(2) B(3) に呼込みたいのですが どうしたらいいのでしょうか 1行だけの場合、 B(1)=Me.DataGridView1(1, Me.DataGridView1.CurrentCell.RowIndex).Value をで良いと思っていますが 複数の場合はどうしたらいいのでしょうか。 ご存知の方、教えてください。

  • VB2010 DataGridView Enter

    現在、表を使ったプログラムを作成して居ます。 DataGridViewでデーターをセルに入れると、下のセルにフォーカスが移ってしまいます。 次に入れるデーターはどこに成るかはユーザーが決定したいので、出来れば入力したセルからフォーカスを移動させたく無いのですが、何か方法はあるでしょうか。 下記の様に、入力された時、右にフォーカスさせる方法は見つけましたが、フォーカスが移らない方法がありましたらお教え下さい。 宜しくお願い致します。 Public Class DataGridViewEx Inherits DataGridView <System.Security.Permissions.UIPermission( _ System.Security.Permissions.SecurityAction.Demand, _ Window:=System.Security.Permissions.UIPermissionWindow.AllWindows)> _ Protected Overrides Function ProcessDialogKey( _ ByVal keyData As Keys) As Boolean 'Enterキーが押された時は、Tabキーが押されたようにする If (keyData And Keys.KeyCode) = Keys.Enter Then Return Me.ProcessTabKey(keyData) End If Return MyBase.ProcessDialogKey(keyData) End Function <System.Security.Permissions.SecurityPermission( _ System.Security.Permissions.SecurityAction.Demand, _ Flags:=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _ Protected Overrides Function ProcessDataGridViewKey( _ ByVal e As KeyEventArgs) As Boolean 'Enterキーが押された時は、Tabキーが押されたようにする If e.KeyCode = Keys.Enter Then Return Me.ProcessTabKey(e.KeyCode) End If Return MyBase.ProcessDataGridViewKey(e) End Function End Class

  • vb.net datagridviewの列位置変更

    vb.net datagridviewの列位置を変更する方法を教えて下さい。 データグリッドビューにDataTable(DBから抽出したデータ)を割り当てました。 DataGridView1.DataSource = DataTable1 ここに、カラムを追加しました Dim column As New DataGridViewButtonColumn() '列の名前を設定 column.Name = "Button" '全てのボタンに"詳細閲覧"と表示する column.UseColumnTextForButtonValue = True column.Text = "詳細閲覧" 'DataGridViewに追加する DataGridView1.Columns.Add(column) この追加したカラムを一番左に表示したいです。

  • vb.netでDataGridViewの背景色の変更について

    初心者ですがよろしくお願いします。 現在DataGridViewにデータを表示できたのですが 背景色の変更ができません。 '編集したDataTableをDataGridViewにセットする DataGridView.DataSource = dt 'DataGridViewにユーザーが新しい行を追加できないようにする DataGridView.AllowUserToAddRows = False '行ヘッダーを非表示にする DataGridView.RowHeadersVisible = False 'DataGridViewの1番目の列を読み取り専用にする DataGridView.Columns(0).ReadOnly = True 'DataGridViewの2番目の列を読み取り専用にする DataGridView.Columns(1).ReadOnly = True 'DataGridViewの3番目以降の列のセルのテキストの配置を上下中央で右寄せする For dateIndex As Integer = 0 To monthList.Count - 1 DataGridView.Columns(2 + dateIndex).DefaultCellStyle.Alignment = _ DataGridViewContentAlignment.MiddleRight Next 'インデックス0の行のセルの背景色を薄い灰色にする DataGridView.Rows(0).DefaultCellStyle.BackColor = Color.LightGray と記述しております。 Rowsの部分をCulumsに変えると縦の色を変えることはできるのですが 何故かRowsだと横の色が変化しません 環境としましては Microsoft Visual Basic 2008 Express Edition VB.NET です ご教授、よろしくお願いします。