1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VB.Netの実装あれこれ

Last updated at Posted at 2023-09-04

Usingを使ったファイル書込み

Dim utf8 As New UTF8Encoding(False) 'BOM無し
Using sw As New StreamWriter("ファイルパス", True, utf8)
  sw.WriteLine(errorInfo)
End Using

ファイル更新日時が新しいものから順番に並べ直す

Dim fileList As New List(Of FileInfo)

'ファイル取得処理
'・・・

'ファイル更新日時が新しいものから順番に並べ直す
Dim sorted() As FileInfo = fileList.OrderByDescending(Function(n) n.LastWriteTime).ToArray()

exeファイルと同じフォルダにあるiniファイルを指定する

AppDomain.CurrentDomain.BaseDirectory & "Setting.ini"

Datatableから特定の列の値を取得して、リスト化する

Dim valueList As List(Of String) = DT.Select(caseWhere).AsEnumerable().Select(Function(row) row("列名").ToString).ToList()

VBにおける日付のデータ型

Date、DateTime、TimeSpanなどがある
DateとDateTimeは日時、TimeSpanは時間を表す
DateTimeのほうが一般的らしい

VB.NETにおけるstaticとshared

sharedはクラスレベルで定義し、ずっと有効
staticはブロックレベルで定義し、クラスが消滅するまで

多重起動を防止する方法

いくつか実装方法はあるが、以下の方法が一番簡単
<実装手順>
1.アプリケーションのプロパティを開く
2.「単一インスタンスのアプリケーションを作成する」にチェックを入れる
3.「アプリケーションイベントの表示」をクリックすると
ApplicationEvents.vbファイルが表示されるようになる。
4.ファイルのクラス内に以下のコードを実装する。

Private Sub MyApplication_StartupNextInstance( _
ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) _
Handles Me.StartupNextInstance
'多重起動しようとした時の処理を実装する
Dim msg As String = "多重起動はできません。"
Dim title As String = My.Settings.ExeName
Dim style As MsgBoxStyle = MsgBoxStyle.SystemModal
MsgBox(msg, style, title)
End Sub

特殊な代名詞

Me:Javaで言うthisと同義、現在のインスタンスを指す
MyClass:自クラスを指す、Javaでこれにあたるのは無い??
MyBase:規定クラスを指す、Javaで言うSuper

MustInheritとNotInheritable修飾子

クラスにつけるもの
MustInheritは、抽象クラス(Javaでいうabstract)
NotInheritableは、継承させないクラス(Javaでいうfinal)

テキストボックスに入力された文字

文字列、数値問わず全てString型となる

AndAlsoとOrElse

Javaでいう&&と||と同じ
1つ目を満たせば2つ目は評価しない

文字列の連結

&と+で連結できる

call文について

FunctionやSubプロシージャを呼び出すのに使うが、call文がなくても
FunctionやSubプロシージャは呼び出せるので、call文は使用しないほうが良い

型変換の方法

・CType
 よく使う
 使い方としては、CType(変換対象オブジェクト, クラス型)
・DirectCast
 パフォーマンスが良い、理由は暗黙的型変換が行われないから
 使い方としては、DirectCast(変換対象オブジェクト, クラス型)
・TryCast
 型変換出来なくても例外が発生しない、その場合、Nothingが返る
 使い方としては、TryCast(変換対象オブジェクト, クラス型)

デバッグ

・ステップイン(ショートカットキー:F11)
 ステートメント1行単位の実行、関数があれば関数内部に入っていく
・ステップオーバ(ショートカットキー:F10)
 ステートメント1行単位の実行、関数があっても関数内部には入っていかない
・ステップアウト(ショートカットキー:Shift + F11)
 今実行している関数の外まででる

Option ExplicitとOption Strict

Option Explicitは、変数を宣言しないと使えないという意味
Option Strictは、変数の型宣言をしないといけない、型変換は明示的にしないといけないという意味

標準出力への書き込み

Console.Out.WriteLine

ByValとByRef

ByValは値渡し
ByRefは参照渡し
引数に、ByRefを指定して、メソッド内でその変数を変更した場合、メソッドの呼び出し元にも影響がある
ByValを指定すると変数のコピーが渡されるため、メソッドの呼び出しに影響はない

等価比較

比較の方法は2つ
・=で比較する
 ⇒値の等価を調べる
・Equalsで比較する
 ⇒参照の等価を調べる
Javaとは違って、String型であっても=の比較で正しい結果が得られるようになっている
Stringが演算子をオーバーロードしているため

オブジェクトの宣言と初期化

VBでは以下は同義
Dim MyPen As New Pen(Color.Blue)
Dim MyPen As Pen = New Pen(Color.Blue)

On Error Resume Next

この一文を書くと、それ以降の処理で例外が発生しても無視される

ClickOnceの情報を取得したい

My.Applicationのなかに色々はいっているみたい

DataGridViewを表示するときに、セルを選択状態にしない

以下のようにする。
ポイントとしては、Formのloadイベントに書いてもうまくいかない。
DataSourceChangedイベントなどに書く必要がある。
Me.MySimDataGridView.CurrentCell = Nothing

Dimによる変数宣言

Dim aaa = ""
とした場合、型を指定していないので、Object型になる。

バージョン管理対象外にすべきもの

binフォルダ
objフォルダ
*.vbproj.user
*.suo(slnファイルは管理対象)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?