電子書籍の厳選無料作品が豊富!

いつもお世話になっております。

DataSetを使用してdatagridviewに表示をしており、
表示する際にdatagridviewの一番右の列にチェックボックスを追加して表示しています。

使用としてフォーム(Form1)に配置しているボタンを押すと別フォーム(Form2)が開き、Form2のLoadイベントでdatagridviewにAccessDBよりデータを取り出し表示するように行っています。
表示までは出来ているのですがボタンを押し、Form2を表示するたびにチェックボックスの列が増えてしまい困っています。
Form2をLoadするタイミングでClearを行っているのですが
思い通りの動作ならず増え続けます。

どのように書いたらClearされるのでしょうか。
初歩的なことかもしれませんがよろしくお願い致します。
下記に現在のForm2のLoad時のコードを書きます。
確認していただき、問題点があればご指導いただければ幸いです。

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Dim SQL As String = ""
Dim DtSet As DataSet = New DataSet("table1")
Dim colchk As New DataGridViewCheckBoxColumn

DtSet.Clear() ← ★意図しているように動かない箇所

Me.DataGridView1.DataSource = Nothing

   SQL =SQL文

db_cn = New OleDbConnection
db_cn.ConnectionString = 接続文字列

db_dta = New OleDbDataAdapter(SQL, db_cn)
db_dta.Fill(DtSet, "table1")

Me.BindingSource1.DataSource = DtSet
Me.BindingSource1.DataMember = "table1"

DataGridView1.Columns.Insert(0, colchk)

DataGridView1.DataSource = Me.BindingSource1

End Sub

◆環境
 言語 VB
 Access2016
 Visual Studio2017

A 回答 (1件)

Form1からForm2をどうやって呼び出しているんですか?



インスタンスを都度生成・破棄されているならともかく、
Loadイベントは必ず一回だけ呼び出されるわけではありませんよ。
http://d.hatena.ne.jp/Kazzz/20070913/p4
http://blog.hikware.com/article/113651386.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

Form1からForm2を呼び出すときは
view_buzai.ShowDialog()
で呼び出していました。

提示していただきました参考サイトで確認して
閉じるときの最後に
Dispose()で破棄することで思い通りの動きになりました。

ありがとうございました。

お礼日時:2018/12/01 09:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!