Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
System.AccessViolationException
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30682#CommentId84895
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
ロト君
 (社会人)
投稿日時
2021/12/18 11:16:46
色々調べてみましたら、自作クラスを通った後にエラーになってるようです。
自作クラスで、
Public Property Form_Name As New Form
という物を使っていますが、New Formで設定した場合。
Form_Name をClose() しないといけませんか??
下記のようなものです。
Imports System.Data.OleDb
Public Class ComboBox_Set
Public Property Select_Table_Name As String
Public Property Select_Name As String
Public Property ComboBox_Name As String
Public Property resultDt As New DataTable
Public Property Form_Name As New Form
Sub New()
Select_Table_Name = Nothing
Select_Name = Nothing
ComboBox_Name = Nothing
resultDt.Clear()
End Sub
Public Sub Clear()
Select_Table_Name = Nothing
Select_Name = Nothing
ComboBox_Name = Nothing
resultDt.Clear()
End Sub
Public Sub Maker()
Dim db As New Connection_DB
db.Sql.AppendLine("SELECT")
db.Sql.AppendLine("t_env.key_name")
db.Sql.AppendLine(",t_env.ID")
db.Sql.AppendLine(",t_env.name1")
db.Sql.AppendLine(",t_env.value1")
db.Sql.AppendLine(",t_env.sort")
db.Sql.AppendLine(",t_env.delflg")
db.Sql.AppendLine("FROM t_env")
db.Sql.AppendLine("WHERE t_env.delflg = 0")
db.Sql.AppendLine("AND t_env.key_name ='" & Select_Name & "'")
db.Sql.AppendLine("ORDER BY")
db.Sql.AppendLine("t_env.key_name ASC")
db.Sql.AppendLine(",t_env.sort ASC")
db.Selecter()
resultDt = db.resultDt
Dim ctrl As ComboBox = FindControl(Form_Name, ComboBox_Name)
'DataTableオブジェクトを用意
Dim data_table As New DataTable()
'DataTableに列を追加
data_table.Columns.Add("ID", GetType(Long))
data_table.Columns.Add("String_name", GetType(String))
For i As Integer = 0 To resultDt.Rows.Count Step 1
'新しい行を作成
Dim row As DataRow = data_table.NewRow()
'各列に値をセット
If i = 0 Then
row("ID") = 0
row("String_name") = "未設定"
Else
row("ID") = resultDt.Rows(i - 1).Item(3)
row("String_name") = resultDt.Rows(i - 1).Item(2).ToString
End If
'DataTableに行を追加
data_table.Rows.Add(row)
Next
data_table.AcceptChanges()
ctrl.DataSource = data_table
ctrl.DisplayMember = "String_name"
ctrl.ValueMember = "ID"
'ComboBox のスタイルを指定します
ctrl.DropDownStyle = ComboBoxStyle.DropDownList
'先頭のアイテムを表示させる
ctrl.SelectedIndex = 0
Clear()
End Sub
Public Function FindControl(ByVal hParent As Control, ByVal stName As String) As Control
' hParent 内のすべてのコントロールを列挙する
For Each hControl As Control In hParent.Controls
' 列挙したコントロールにコントロールが含まれている場合は再帰呼び出しする
If hControl.HasChildren = True Then
Dim hFindControl As Control = FindControl(hControl, stName)
' 再帰呼び出し先でコントロールが見つかった場合はそのまま返す
If Not hFindControl Is Nothing Then
Return hFindControl
End If
End If
' コントロール名が合致した場合はそのコントロールのインスタンスを返す
If hControl.Name = stName Then
Return hControl
End If
Next hControl
End Function
End Class