質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

4回答

13373閲覧

データグリッドビューのチェックボックスについて

alf824824

総合スコア12

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

2クリップ

投稿2015/04/07 17:06

はじめて利用させていただきます。

VB.NETで開発を行っている初心者です。

今回VisualStudioでDataGridViewを題材として開発の勉強を行っているのですが手がつまりました。

お力添えをお願いします。

■現在の状況
DataGridViewでCSVを読み込み、表示させている状態です。
一番左の列がチェックボックス
二つがテキストカラム
1つがリンクカラムとなっています。

■実現させたいこと
1.チェックボックスをクリックした時に、行を全選択させたい。
(行のヘッダーをクリックした時と同じ状態)

2.チェックボックスにチェックを複数入れた状態で削除のボタンをクリック
した時に削除できるようにしたい。
ここの部分は削除ボタンを作成したのでイベント的にはボタンクリックのイベントになると思われます。

以上です。

セルをクリックしたときに行を全選択できるようにして、削除ボタンを押したらその選択されている行を削除ボタンを押すことによって削除できるところまではなんとかできました。

チェックボックスにチェックを入れたら行が前選択される
(複数のチェックボックスにチェックを入れて行の削除を行いたいのです)

このことがどう頑張ってもできないのでお助けください。
数多ある中で頻出している題材だとは思うのですがん煎撮ぞ宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

多分ですが、チェックボックスをクリックしたらチェックされた行を識別したいという事でしょうか?
それならこれでどうでしょうか?

全て選択、解除のリンクラベルクリック Private Sub lnk_全て_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnk_全て.LinkClicked, lnk_解除.LinkClicked For _カウンター = 0 To データグリッド.RowCount - 1 If sender Is lnk_全て Then データグリッド(clm_選択.Index, _カウンター).Value = True Else データグリッド(clm_選択.Index, _カウンター).Value = False End If Next End Sub
データグリッドの選択チェックが変更された Private Sub データグリッド_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles データグリッド.CellValueChanged If データグリッド.RowCount <= 0 Then Exit Sub End If If e.ColumnIndex = clm_選択.Index Then If データグリッド(clm_選択.Index, e.RowIndex).Value Then データグリッド.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.DarkSlateBlue データグリッド.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.White Else データグリッド.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Empty データグリッド.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.Empty End If End If End Sub

投稿2016/09/02 00:46

seesaajira-

総合スコア107

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問を読むと、どこまでできているのかよくわからないのですが…。
2.チェックボックスにチェックを複数入れた状態で削除のボタンをクリックした時に削除できるようにしたい。
の方は以下でできると思います。(同じようなことをやっていて他の方に教えていただいたのですが・・。)

Private Sub ButtonDelete_Click_1(sender As Object, e As EventArgs) Handles ButtonDelete.Click '最下行から上に向かってチェックボックスにチェックが入っているかどうかループで判断していく Dim i As Integer For i = DataGridView1.Rows.Count - 1 To 0 Step -1 'チェックが入っている場合は行削除 If DataGridView1(colSELFLG, i).Value = True Then DataGridView1.Rows.RemoveAt(i) End If Next End Sub

投稿2016/08/31 04:36

yyy

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。
こうですかね。

lang

1Public Class Form1 2 3 Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 4 With dgv 5 .AllowUserToAddRows = False 6 .Columns.Add(New DataGridViewCheckBoxColumn() With {.HeaderText = "check", 7 .Name = "column1"}) 8 .Columns.Add("column2", "text1") 9 .Columns.Add("column3", "text2") 10 .Rows.Add(False, "A1", "B1") 11 .Rows.Add(False, "A2", "B2") 12 .Rows.Add(False, "A3", "B3") 13 End With 14 AddHandler dgv.CurrentCellDirtyStateChanged, AddressOf dgv_CurrentCellDirtyStateChanged 15 AddHandler dgv.CellValueChanged, AddressOf dgv_CellValueChanged 16 End Sub 17 18 Sub dgv_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As EventArgs) 19 If dgv.CurrentCellAddress.X = 0 AndAlso dgv.IsCurrentCellDirty Then 20 dgv.CommitEdit(DataGridViewDataErrorContexts.Commit) 21 End If 22 End Sub 23 24 Sub dgv_CellValueChanged(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) 25 dgv.SuspendLayout() 26 If e.ColumnIndex = 0 Then 27 For Each row As DataGridViewRow In dgv.Rows 28 row.Selected = CBool(row.Cells(0).Value) 29 Next 30 End If 31 End Sub 32 33End Class 34

投稿2015/04/15 14:16

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

初めまして
DataGridViewのオプションで「MultiSelect」を「True」、「SelectionMode」を「FullRowSelect」にして以下のようにしてはどうでしょうか。

<VB>
Private Sub DataGridView1_LostFocus(sender As Object, e As System.EventArgs) Handles DataGridView1.LostFocus

Me.DataGridView1.EndEdit() For Rw As Integer = 0 To Me.DataGridView1.RowCount - 1 Dim Ck As Boolean = Me.DataGridView1.Rows(Rw).Cells(0).Value If Ck = True Then Me.DataGridView1.Rows(Rw).Selected = True Else Me.DataGridView1.Rows(Rw).Selected = False End If Next End Sub

投稿2015/04/13 05:56

編集2015/04/13 05:57
Shiriki_Utundu

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問