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ファイルは管理対象)