• 締切済み

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

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

みんなの回答

回答No.3

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

guccyonn
質問者

お礼

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

回答No.2

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

参考URL:
http://dobon.net/vb/dotnet/control/performclick.html
  • NYOI
  • ベストアンサー率58% (56/96)
回答No.1

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

guccyonn
質問者

お礼

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

関連するQ&A

  • DatagridViewの値確定

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

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

  • 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のセルを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

  • DataGridViewでMauseDown

    VB.NETでDataGridViewでMauseDownイベントを実装するとCellContentClickイベントやCellClickイベントが発生しなくなりました。 VB.NETのバージョンは4.6.2です。 Panelコントロール上に配置したDataGridViewのCellContentClickイベント内でClickされたセルの列に応じた処理を行っています。 このDataGridViewにDrag&Dropの機能を設けるべく、MouseDownイベントを追加しました。 MouseDownイベント内に記述した処理の動作も問題無く、全体の動作確認を行っていると、DataGridViewのCellContentClickイベントが発生していない事に気がつきました。 CellContentClickイベント内の処理の1行目にブレークポイントを設置して確認しました。 試しにMouseDownイベント自体をコメントアウトするとCellContentClickイベント内の処理は実行されました。 MouseDownイベント、CellContentClickイベントの両方を動作させる方法はありますでしょうか?

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

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

  • VB2005-DataGridView 起動時セルが必ず選択される

    VB2005を勉強しているものです。毎度お世話になりありがとうございます。 今回ですが、DataGridViewを使用したプログラムで、起動時は必ず一番上のセルが選択され、DataGridView1_SelectionChangedイベントが動いてしまい、都合悪いのです。選択されない方法はありませんか また選択されたセルの色が青になりますが、色の変更はできますか ご教授願います。よろしくお願いいたします。

  • DataGridViewのフォーカス遷移について

    はじめまして C#のWindouwsアプリを開発しています。 件名に関してどなたかご教授お願いします。 事前の情報としまして、 DataGridViewのフォーカス遷移時にReadOnlyがtrueのセルには カーソル遷移をさせたくなく、下記のサイトを参考にDataGridView をカスタマイズしました。 http://social.msdn.microsoft.com/Forums/ja-JP/vbexpressja/thread/fc1a0d8d-23d1-4a4e-a88c-f9a1edd81cff 問題なく、動作しているのですが、 DataGridViewのCellValidatingイベントで、 各セルのエラーチェックを行っており、 入力した内容がエラーだった場合は、「e.Cancel = true」 を使用し、セルの移動をキャンセルさせています。 ここで、問題が発生しています。 カスタマイズしたDataGridViewでは、フォーカスを移動させて いるのにもかかわらず、CellValidatingイベントでは、 セルの移動をキャンセルしているため、 カスタマイズした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)の所で境界外となって上手くいかないようです。 何か良い方法がありましたら、ご教授願います

専門家に質問してみよう