しばらくぶりのVB.NETですが、STA(Ski Turn Analyzer)開発で、実測データの欠落部分が発生したので、手修正しなければならなくなって、EXCELで手修正するのも面倒なので
DataGridViewで行編集(Insert,Delete,Copy,Paste)さえできればデータ編集できるので、機能追加しました。
STAプログラム巨大なので、datagridview部分に必要なサンプルプログラムだけ公開します。
●概要
datagridview内でマウスクリックイベントが発生して、そのクリックが右ボタンだったら、ContextMenuSprit1を表示します。
ContextMenuSprit1は、コントロールオブジェクトなので、ツールボックスでFORM1にドラッグ&ペーストしておきます。
ContextMenuSpritは、フォームのイニシャライズ時に定義して、指定したSUBへリンクしておきます。
本プログラムでは、Sub Rinsert() ,Sub Rdelete(),Sub Rcopy() ,Sub Rpasteの4個のSubを作って、ContextMenuSpritのcMenu1にリンクしてます。
●参考にさせていただいた記事
さんざん検索してVB.NET用ではこれしかなかったので貴重な記事です。
コンテキストメニューから[切り取り][コピー][貼り付け]を行うには
●プログラム要点
もともとDataGridViewのプログラムがある方が追加機能として加える場合に使ってください。DataGridViewのプログラムをお持ちでない方は
こちらを参考にして作ってから、本編集機能を追加してください。
DataGridView学習(Excelとの大きな違いで面食らった話し)
DataGridViewでMatrixCalculator作った(基本的な使い方が全部はいってますのでDataGridViewの基礎参考例です)
GISTからコピーしてください。
https://gist.github.com/dj1711572002/9c18c37a19eb670052f1e65d99c34294
Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated ‘———-DGV ContextMenuStrip add——————– Form1の起動時にcMenu1の項目を追加定義 cMenu1 = New ContextMenuStrip() cMenu1.Items.Add(“Insert”, Nothing, New System.EventHandler(AddressOf Rinsert)) cMenu1.Items.Add(“Delete”, Nothing, New System.EventHandler(AddressOf Rdelete)) cMenu1.Items.Add(“Copy”, Nothing, New System.EventHandler(AddressOf Rcopy)) cMenu1.Items.Add(“Paste”, Nothing, New System.EventHandler(AddressOf Rpaste))’----- 以下FORM1の初期設定項目が続くーーーー |
以下は、行Insert、行delete,行copy,行pasteの4つのSubです。
‘Class 全体の変数宣言に配列宣言を追加しておいてください Public copyCol() Public copyRow()’行Insert Private Sub Rinsert() Debug.Print(“Rinsert”) dgv1.Rows.Insert(dgv1.CurrentCell.RowIndex) For i = 0 To dgv1.Rows.Count – 1 dgv1.Rows(i).HeaderCell.Value = i.ToString() Next i End Sub’行delete Private Sub Rdelete() Debug.Print(“Rdelete”) dgv1.Rows.RemoveAt(dgv1.CurrentCell.RowIndex) For i = 0 To dgv1.Rows.Count – 1 dgv1.Rows(i).HeaderCell.Value = i.ToString() Next i End Sub ‘行copy Dim cX As Integer = dgv1.CurrentCell.ColumnIndex For i = 0 To rX – 1 End Sub ‘行paste ‘If RadioButton1.Checked = True Then |