• 締切済み
  • 困ってます

DataGridViewでセルクリックイベントを発生させるには

DataGridViewでセルクリックイベントを発生させるには、 デザイナからではCellClickイベントハンドラとなりますが、 プログラムコード上から発生させるにはどのようにすればよろしいでしょうか? CurrentCellでアクティブセルを変更した時に、そこのセルをクリックさせるイベントが欲しいのですが・・ 宜しくお願い致します。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数5169
  • ありがとう数3

みんなの回答

  • 回答No.3

ANo.2です。 すみません、間違えました。 buttonの場合でした。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

いえいえ、勉強になりました。 回答ありがとうございました。

関連するQ&A

  • DatagridViewの値確定

    VB2005です。 DataGridViewを私用しています。 EditModeはEditOnEnterです。 特定のセルの値を変更し、カーソルがその列から移動していない状態で、 Buttonコントロールをクリックすると、ボタンクリック時のイベントの前に、 そのセルのCellValueChangedイベントが発生します。 が、同じ要にセルの値を変更し、カーソルがその列から移動していない状態で、 HScrollBarコントロールをクリックすと、CellValueChangedイベントが発生しません。 そうすると、変更した値が反映されず、前の値で処理が進んでしまいます。 HScrollBarコントロールをクリックしたときも、DataGridViewの値が 確定される方法はないでしょうか。 よろしくお願いいたします。

  • DataGridViewで1行全てを選択状態にするには

    VB.NETのDataGridViewについての質問です。 DataGridViewでセルを選択した時に、そのセルの行を全て選択したいのですが、その方法がわからず困っています。 単純な方法を試してみたのですが Private Sub DataGridView_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView.CellClick DataGridView.CurrentCell = DataGridView.Rows(e.RowIndex).Cells(-1) End Sub この方法ですと、Cells(-1)の所で境界外となって上手くいかないようです。 何か良い方法がありましたら、ご教授願います

  • DataGridViewのセルをenterキーで横移動したいです。

    VB.NET2005にてDataGridviewのセルを横移動させたいんです。 いろんな物を参考に以下のプログラムを何とかプログラムを組んでみましたが、ビルド時セル(0,0)→セル(0,1)→セル(0,2)→セル(0,3)・・・と1行目がenterキーで移動できず、2行目へ下がってしまいます。2行目からは横移動できるようになりました。 1週間近く試行錯誤しましたが、うまく動きません。 訂正箇所を教えていただけないでしょうか? よろしくお願いします。 いまの行と列の取得 Dim currentRow As Integer = Me.DataGridView1.CurrentRow.Index Dim currentColumn As Integer = Me.DataGridView1.CurrentCell.ColumnIndex Dim nextColumn As Integer = currentColumn + 1 Dim nextRow As Integer = currentRow '押したキーがENTERだったら Dim t As Object t = e.KeyCode() If t = 13 Then If nextColumn = 6 Then '列数が最終列を超えたとき nextColumn = 0 '最初の列数へ Else nextRow -= 1 End If MessageBox.Show("nextColumn =" & nextColumn & "nextRow = " & nextRow) Try Me.DataGridView1.CurrentCell = Me.DataGridView1(nextColumn, nextRow) Catch If Not (Me.DataGridView1.CurrentCell Is Nothing) Then nextColumn = 0 nextRow = 0 Me.DataGridView1.CurrentCell = Me.DataGridView1(nextColumn, nextRow) Exit Sub Else Me.DataGridView1.CurrentCell = Me.DataGridView1(nextColumn, nextRow) Exit Sub End If End Try End If

  • 回答No.2

PerformClick と言うのがあるらしいです。 http://dobon.net/vb/dotnet/control/performclick.html

参考URL:
http://dobon.net/vb/dotnet/control/performclick.html

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • NYOI
  • ベストアンサー率58% (56/96)

CellClickイベントハンドラの内容を別のメソッドとして作り、アクティブセルを変更した際にそのメソッドを呼び出す方法ではダメなのでしょうか? どうしてもCellClickイベントを発生させて処理をしたいのでしょうか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

別のメソッドを作成して、そのメソッドを呼び出すという方法で可能なので、仰って頂いた方法で行いたいと思います。 回答ありがとうございました

関連するQ&A

  • DataGridViewのチェックボックス

    現在DataGridViewのチェックボックスの状態で難儀しております。 DataGridViewのチェックボックス操作に、 CurrentCellDirtyStateChangedで未コミット分の判定を行い、 コミットしてからCellValueChangedで値をとる一般的な手法を用いております。 チェックボックスを単純にTrue/Falseして入力制御したりする分にはこれで問題ないです。 しかしながら、Falseした際に、他の入力セルが変更されていた場合に、 「変更内容が消えるがよろしいか?」といった内容のダイアログを出し、 場合によってはチェックボックスの値を元に戻すということを実現したいと思います。 そこでダイアログで「いいえ」を選択された場合に、 チェックボックスのValueをTrueに戻し、 発生したイベントは別に持たせたフラグでスルーするようにしましたが、 Valueは確かにTrueなのですが、表示上がFalseのままであり、 タブ移動して初めて表示上が変わる状態になってしまっています。 そこでグリッドの表面上のリフレッシュ等が必要かと思いましたが、 方法が思い浮かばず途方に暮れています。 どなたか知恵をお貸しください。

  • シートのクリックイベントは拾えないのか?

    ExcelのVBAに関する質問です。 さきほど「セルをクリック、またはダブルクリックしたときに○○したい」という質問に回答したのですが、「セルをクリックした」というイベントを拾う方法がわからず、ダブルクリックのパターンで回答しました。 Worksheetのイベントには BeforeDobuleClick や BeforeRightClick はあるのに Click や onClick というイベントがありません。オートシェイプなどのオブジェクトやフォーム上のオブジェクトには Click イベントがあるのですが、Worksheet になぜかありません。 これまでも同様のケースがあり、ネットで検索したりしたのですが、どれも SelectionChange で代用するものでした。それだと確かにマウスで別セルを選択したときにイベントが発生しますが、 ・キーボード操作でセルを移動してもイベントが発生する ・現在選択しているセルをクリックしてもイベントが発生しない と、厳密はマウスでクリックしたときと同じ動作になりません。 確か以前の質問で「あるセルをクリックするたびに、他のセルの値をカウントアップしたい」というようなものもありました。このような場合には、やはり Click に相当するようなイベントで処理したいです。 どうにかしてWorksheetでクリックイベントを拾うことはできないのでしょうか?

  • VB2005 DataGridView CurrentCell.ColumnIndex

    VB2005です DataGridViewで + ヘッダ + 項目名1 + 項目名2 + 項目名3 + 項目名4 + 列の順序変更で + ヘッダ + 項目名3 + 項目名2 + 項目名4 + 項目名1 + とした場合 i = DataGridView1.CurrentCell.ColumnIndex Label1.Text = DataGridView1.Columns(i).HeaderText としてヘッダ項目名を取得できましたが、 For x=0 to DataGridView1.ColumnCount - 1 として、セルの左から順番に項目名を取得するにはいかがしたらよろしいでしょうか? コードでCurrentCellを移動する方法も合わせて教えて下さい。 また上記2行のコードをもっとスマートに書けないでしょうか?

  • DataGridViewで入力チェック後、フォーカスをあてたい

    お世話になります。 現在VB2005で開発中なのですが、DataGridViewの処理で躓いております。 DataGridViewには「氏名」「住所」「生年月日」を入力できるようにしており、全ての項目において入力必須としています。 よって、どれか一つでも入力がなかった場合はエラーメッセージを表示させ、メッセージ表示後に該当項目のセルにフォーカスをあてたいと考え、ロジックを組んでおります。 仮に「氏名」が空白で、次の行の任意セルをクリックした場合、RowValidatedイベントで各セルに対し入力チェックを行い、メッセージを表示させた後にCurrentCellを空白だったCellにし、さらにEditModeで編集可能状態にすればいいと考えていたのですが、結果は最後にクリックした任意セルにフォーカスが移ってしまいます。 入力チェックを発生させるイベントに問題があるのか、カレントセルにフォーカスを当てる処理で問題があるのかで悩んでいる状態です。 どなたか心当たりがあれば教授願いたいです。 よろしくお願いいたします。

  • 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がコードを入力する列になります。 よろしくお願いいたします。

  • DataGridViewの特定のセルで選択状態を保ちたい VB2005

    DataGridViewの件で質問したいのですが。 よろしくお願いします。 VB2005で、DataGridViewの特定のセルでカーソルがとどまる(選択状態)ようにしたいのですが 思ったように動いてくれません。例えば、下のようなDataGtridViewがあったとして, 例 ------------------ |ID | X | Y | ------------------ |001| 100 | | ------------------ |002| 150 | | ------------------ |003| 105 | | ------------------ ID が002の行で、Y列のセルにカーソルが入りXと違う数を入力したら、メッセージを 表示させて、そのセルにカーソルがとどまる処理を作りたいのですが。下の行のセルに 移動してしまいます。  DataGridView_CellEndEditイベントやDataGridView1_CellValueChangedなどで カーソルがとどまる処理をしているつもりなのです下の行に移動してしまいます。 DataGridViewの初期設定の問題でしょうか? Private Sub DataGridView1_CellValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged Dim DgvRow As Integer '行をセット DgvRow = e.RowIndex ' X と Yが異なれば、メッセージ表示 If DataGridView1("X", e.RowIndex).Value <> DataGridView1("Y", e.RowIndex).Value Then MsgBox("X <> Y", MsgBoxStyle.OkOnly) Me.DataGridView1.CurrentCell = Me.DataGridView1("Y", DgvRow) ' これも駄目だった ↓ 'Me.DataGridView1.CurrentCell = Me.DataGridView1("Y", e.RowIndex - 1) End If End Sub アドバイスいただけたら幸いです。よろしくお願い致します。 開発環境 VB2005 Visual Studio 2005 Standard Edition(SP1) Windows XP Pro SP2

  • [C#]DataGridViewのVirtual Modeについて

    DataGridViewのVirtual Modeをtrueにしてデータを表示させています。 DataGridViewのRowCountを設定すると、件数が多い(数万件以上)場合に、CPUの使用率が高くなり、動作が遅くなってしまいます。 例: Dgview.RowCount = 100000; 画面に表示されているセルに関係なく、すべてのセルについてCellValueNeededイベントが発生してしまっているようなのですが、その原因がつかめません。 画面に表示されているセルのCellValueNeededが優先的に発生するようで、データ自体は正常に表示されます。 しかし、画面上のセル分のイベントが終わると、また続きからCellValueNeededイベントが再開されてしまいます。 セルの値はDataTable変数に一度値を格納したものをセルごとに取得しています。 試しに、100000件のDataGridViewのみを表示するプログラムを作成した場合、正常に動作しました。 現在作成中のプログラムでのバグ?のようです。 他に特別なイベントが発生している形跡は自分の確認した限りでは見られません。 説明下手で申し訳ありませんが、原因のわかる方、回答お願いします。

  • 【VB】データグリッドビューでのセルチェンジイベントについて

    いつもお世話になります。 VB2005です。 基本的な質問だと思います。 データグリッドビューコントロールのセルチェンジイベントにプログラムを書いています。 どのセルをアクティブにしても処理が走るのですが、これを2列目を選択したときだけにしたいのです。 どんなコードを書けばいいんでしょうか? 思いついたので if datagridview1.columns(2).selected then   処理内容 end if だったのですが、駄目でした。(><)

  • CellEnterイベント仕様について

    DataGridViewのCellEnterの仕様で下記の仕様がありますが、 「コントロールに入力フォーカスがなく、クリックされたセルが以前に現在のセルではなかった場合、 このイベントが 1 回のクリックに対して 2 回発生することがあります。」 この件で困っています。 2回イベントが発生する場合は、下記のような動作になっています。 1回目:前回セル位置情報でイベントが発生 2回目:今回セル位置情報でイベントが発生 また、1回のみの発生の場合は、 1回目:今回セル位置情報でイベントが発生。 となっています。 このイベントで、 前回のセル情報で発生したのか、今回のセル情報で発生したのか 区別したいのですが よい方法はありませんか? 現状は、Enterイベントでフラグを立てて 「コントロールに入力フォーカスがなく」の条件は判断できていますが、 「クリックされたセルが以前に現在のセルではなかった場合」を判断する方法が 分からない状態です。 よろしくお願いします。

  • C# DataGridView内での制御について

    初めて投稿します。 C#のwindowsアプリを開発しています。 開発ツールはVS2010を使用しています。 datagridview内の制御について困っているので 知恵を貸してください。 datagridviewのEditModeをEditOnEnterに設定し、常に入力モードにしています。 また、CellValidatingを使用し、各セルの必須チェックなどのエラーチェックを おこなっています。 Enterキー押下でCellValidatingイベントが発生し、エラーチェックを行う ことには問題ないのですが、矢印キーやマウスでのセル移動時にも、 CellValidatingイベントが発生します。 矢印キーやマウスでの操作の場合はCellValidatingイベントを発生させずに したいのですが、どうすればよいのでしょうか? 知っている方がいれば、知恵を貸してください。