(目次)
■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を更新するといくつかが動かなくなる。うまく作ればメリット。
-----------------------------------------------------------------------------