VB2022

Last-modified: 2024-05-02 (木) 17:06:50
amazon.gif

 VB2022初期設定

  • COMの参照追加
    ソリューションエクスプローラー内で、プロジェクトを右クリック⇒追加⇒COM参照
  • exeファイルとDLLファイルをひとまとめにする方法
    1.「プロジェクト」から「NuGet パッケージの管理」をく
    2.Fody.Costura」を検索してインストール。「Fody」も一緒にインストールされる
    3.vbprojファイルを開く
    4.<Reference Include="mscorlib" />を追記
     <Reference Include="System" />の直前
    5.テキストエディタで開いて編集した

参考

  • 実行時間がかかる場合に例外処理から外す
.NET アプリケーションをデバッグ実行中に時間がかかる処理があり、以下のエラーが発生しました。
 ===============================================================
ContextSwitchDeadlock が検出されました。
Message: CLR は、COM コンテキスト 0x1af66748 から COM コンテキスト 0x1af66870 へ 60 秒で移行できませんでした。ターゲット コンテキストおよびアパートメントを所有するスレッドが、ポンプしない待機を行っているか、Windows のメッセージを表示しないで非常に長い実行操作を処理しているかのどちらかです。この状態は通常、パフォーマンスを低下させたり、アプリケーションが応答していない状態および増え続けるメモリ使用を導く可能性があります。この問題を回避するには、すべての Single Thread Apartment (STA) のスレッドが、CoWaitForMultipleHandles のようなポンプする待機プリミティブを使用するか、長い実行操作中に定期的にメッセージをポンプしなければなりません。
===============================================================
デバック⇒ウィンドウ⇒例外設定⇒「Managed Debugging Assistants」を展開し、「ContextSwitchDeadlock」の項目のチェックを外す。

 フォルダ設定

  • フォルダ作成すると読み取り専用になる(Win10以降、顕著に発生する現象)参考
'フォルダーが読み取り専用になるとファイルの属性も読み取りになることもあるため
'下記のコードを追加する。
Dim nowatrbt As FileAttribute '現在の属性
Dim nwattrbts As FileAttribute '新しい属性
nowatrbt = IO.File.GetAttributes("C:\test\testfile.txt") '現在の属性を取得
nwattrbts = nowatrbt And (Not FileAttribute.ReadOnly) '読み取り専用属性の解除
IO.File.SetAttributes("C:\test\testfile.txt", nwattrbts) '新しい属性をセット

 DataGridView

  • CSVファイルをDataGrdiViewに取り込む
    CSV→DataTable→DataGridView参考
Private Sub ConvertCsvToDatatable_01(Fn As String)
       If IO.File.Exists(Fn) = False Then
           MessageBox.Show("存在しません!")
           Exit Sub
       End If
       'テーブルの列を定義
       Dim columns As DataColumn() = {
           New DataColumn("検索文字", System.Type.GetType("System.String")),
           New DataColumn("ファイル名", System.Type.GetType("System.String")),
           New DataColumn("検索日時1", System.Type.GetType("System.String")),
           New DataColumn("検索日時2", System.Type.GetType("System.String"))
       }
       'テーブルに列を追加
       Dim Dt1 As DataTable = New DataTable
       Dt1.Columns.AddRange(columns)
       Dim Rx As String
       Dim Sr As New IO.StreamReader(Fn, System.Text.Encoding.Default)
       Rx = Sr.ReadLine
       Do While Not Rx Is Nothing
           Dim Ar1 As String() = Rx.Split(",")
           If Ar1.Length >= 3 Then
               Dim Row1 As DataRow = Dt1.NewRow
               Row1("検索文字") = Ar1(0)
               Row1("ファイル名") = Ar1(1)
               Row1("検索日時1") = Ar1(2)
               Row1("検索日時2") = Ar1(3)
               Dt1.Rows.Add(Row1)
           End If
           Rx = Sr.ReadLine
       Loop
       Me.DataGridView1.DataSource = Dt1
       'ヘッダーとすべてのセルの内容に合わせて、列の幅を自動調整する
       DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
   End Sub

 VB2022アドイン設定

  • OracleクライアントをインストールしないでOralceに接続する方法
    Oracle2022

 エラー対応

  • 「オブジェクト参照が必要です」エラーが出たときは?

参考

対策例

 'Dim result2 = OriginalClass.Add(1, 2) ' ←この行はコンパイルエラー
 ' BC30469 非共有メンバーを参照するには、オブジェクト参照が必要です。
 ' ↓オブジェクトを作り、そのオブジェクトに対して呼び出せばよい
 Dim objectOfOriginalClass = New OriginalClass()
 Dim result2a = objectOfOriginalClass.Add(1, 2)

サイト内リンク

Office系

DB系

開発

OS系