(目次)

■VB.NET基本

カプセル化
多様性(Overloads)
継承(Inherits & Overrides)

エラー処理
進捗表示
入力チェック
EXEとDLL

----------------------------------------------------------------------------

カプセル化
 ※外部からは内部の処理を見えなくする事

多様性(Overloads)
 …関数について引数が複数ある等、求める結果は同じでも色んな使い方ができる様にする。
  作るのは面倒臭いけど、使うのは簡単。

 …コピー元、コピー先の、Private sub 関数名
  ⇒Private Overloads sub 関数名


 ※Overloads…結果は同じ。過程が違う。


継承(Inherits & Overrides)
 …クラスで用いられる変数をそのまま使いつつ、結果を変えるメソッドを作る場合

  継承元:Private sub 関数名
  ⇒ Private Overridable sub 関数名

  継承先:Private sub 関数名
  ⇒ Inherits 継承元のクラス名 & Private Overrides sub 関数名


 ※Inherits & Overrides…結果を変える。過程は同じ


・継承元・親クラスにてPrivateスコープで変数使用宣言している場合、  
  ⇒継承先・子クラスではその変数を使う事はできない。

・継承元・親クラスにてProtectedスコープで変数使用宣言している場合、
 ⇒継承先・子クラスからもその変数を使える。フォームからは駄目。   

・識別子(名前空間の途中までの省略形? あるいは結果は同じでも別の名前空間)
 Me.…自分のクラスの変数、メソッド・プロパティ等を参照する為の識別子。
    まあ、当たり前。
 MyBase.…親クラスのものが参照できる。
 MyClass.…自分のクラスも、親のクラスも参照できる。


(例)
'継承元クラス
Public Class クラス名1()

 'インスタンス変数(継承先には使わせない)
 Private 変数名1 As Integer
 'インスタンス変数(継承先にも使える)
 Protected 変数名1 As Integer

 '継承を許可している関数
 Private Overridable Sub 関数名1()

 End Sub
End Class

------------------------------------------------------------------------

'継承先クラス
Public Class クラス名2()
 'クラス名1を継承する(プロパティ・メソッド・インスタンス変数が使える)
 Inherits クラス名1

 '継承を宣言して、継承元の関数名1と同じ関数を作る。
 Public Overrides Sub 関数名1()

  '継承元の関数名1を呼び出して実行
  Call MyBase.関数名1()

 End Sub

End Class


-----------------------------------------------------------------------------

エラー処理

Try

    ※Try~Catch間でエラーが起こった場合、全て↓Catchへジャンプする。


    Return True

Catch ex As Exception
    Call MsgBox(ex.Message, MsgBoxStyle.Information, "ツールバーの表示文章")
    ※ex.message:エラー内容が表示される。
Finally
    ※エラーの有無に関わらず行われる処理
  ※Return True の後に実行される。
End Try

-----------------------------------------------------------------------------

進捗表示

'コントロール(ProgressBarを配置後)

ProgressBar1.Maximum = 10000    '最大値
ProgressBar1.Minimum = 1        '初期値
ProgressBar1.Value = 1          '値

ラベル = 分子 & "/" & 分母
ProgressBar1.Value = 分子

Reflesh()

もしくは、

Call Application.DoEvents()    'VB6で言う、DoEvents と同じ(↑Reflesh()の方が良いらしい)


-----------------------------------------------------------------------------

入力チェック

Private Sub txtSample_KeyDown( _
    ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyEventArgs) _
        Handles txtSample1.KeyDown, _
                txtSample2.KeyDown

        ※↑txtSample1とtxtSample2のキーダウンイベント両者の一括処理

    ※[Return]キーか否か?を判定
    If e.KeyCode <> Keys.Enter Then Exit Sub

End Sub


※txtSample1,txtSample2のCausesValidationプロパティがTrueに設定されている時、
 ↓のイベントが勝手に発生する

Private Sub txtSample_Validating( _
    ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) _
        Handles txtSample1.Validating, _
                txtSample1.Validating

                ※↑txtSample1とtxtSample2の入力チェックイベント両者の一括処理

    If エラー判定 = True Then
        ※タブ遷移をキャンセルする

        e.Cancel = True
    End If

End Sub

-----------------------------------------------------------------------------

EXEとDLL

①EXE
 ※機械語化されたプログラム(全てのモジュールや外部ファイル(DLL)を含めて)。
  EXEから別のEXEを呼び出す事もできる。

②DLL
 ※機械語化されたプログラム(単一のプロジェクトのみ)。
  外部DLLを参照している場合、その外部DLLを除いて機械語化する。

  メリット:重複するDLL分の容量を軽減できる。
  デメリット:遅くなる。
  特徴:1つの共通DLLを更新するといくつかが動かなくなる。うまく作ればメリット。

-----------------------------------------------------------------------------