コンストラクタでリッチテキストボックス(実際は派生クラスのExpandedText)を自動的に追加しています。あとは、"LoadFile"メソッドでファイルを読み込み、"SaveFile"メソッドでファイルに書き出しています。いずれもファイルのパス名を引数に取ります。拡張子rtfに対応するようにしていますが、テキスト形式のファイル専用のエディタなので、これは余計かもしれません。
今回は付けませんでしたが、もし付け加えるなら、エンコード機能があると便利だと思います。
Public Class TextPage
Inherits System.Windows.Forms.TabPage
' 変数
Friend WithEvents EditBox As ExpandedTextControl
' New コンストラクタ
Public Sub New()
MyBase.New()
EditBox = New ExpandedTextControl()
EditBox.Dock = DockStyle.Fill
Me.Controls.Add(EditBox)
End Sub
' LoadFile : ファイルを開く
Public Sub LoadFile(ByVal path As String)
Cursor.Current = Cursors.WaitCursor
If IsNothing(path) Then path = ""
If path.Length > 0 Then
If IO.Path.GetExtension(path).Equals(".rtf") Then
EditBox.LoadFile(path, RichTextBoxStreamType.RichText)
Else
EditBox.LoadFile(path, RichTextBoxStreamType.PlainText)
End If
End If
EditBox.PathName = path
EditBox.Modified = False
Cursor.Current = Cursors.Default
End Sub
' SaveFile : ファイルへ保存
Public Sub SaveFile(ByVal path As String)
Cursor.Current = Cursors.WaitCursor
If (Not IsNothing(path)) AndAlso (path.Length > 0) Then
If IO.Path.GetExtension(path).Equals(".rtf") Then
EditBox.SaveFile(path, RichTextBoxStreamType.RichText)
Else
EditBox.SaveFile(path, RichTextBoxStreamType.PlainText)
End If
EditBox.PathName = path
EditBox.Modified = False
End If
Cursor.Current = Cursors.Default
End Sub
End Class

「綴り帖」では、最近使ったファイルを10個まで記録することにします。ファイルは、メニューのリストの0番に格納し、以下一つづつ下にずらしていきます。なお、ファイル名は、後半の回でつくる初期化ファイルに書き出します。今回はそのためのコレクションクラスをつくっておきます。文字列専用のコレクションです。これも既存のクラスで間に合います。ArrayListクラスあたりが良いかもしれません。ただし、既存のクラスを使うときは、CType,CStringなどを使って、いちいちStringクラスへキャスト(型変換)してやる必要があります。
Public Class StringCollection
Inherits System.Collections.CollectionBase
' デフォルトプロパティ
Default Public Property Item(ByVal index As Integer) As String
Get
Return Me.List(index).ToString
End Get
Set(ByVal Value As String)
Me.List(index) = Value
End Set
End Property
' New コンストラクタ
Public Sub New()
MyBase.New()
End Sub
' Insert : 挿入
Public Sub Insert( _
ByVal value As String, _
Optional ByVal position As Integer = -1)
If position = -1 Then
Me.List.Add(value)
Else
Me.List.Insert(position, value)
End If
End Sub
' IndexOf : 検索
Public Function IndexOf(ByVal value As String) As Integer
Return Me.List.IndexOf(value)
End Function
End Class
CollectionBaseクラスには、"Add"(追加)メソッドと"RemoveAt"(削除)メソッドがすでに装備済みです。これだけではリストの頭に追加するのに苦労するので、"Insert"メソッドを追加します。通常、"Insert"メソッドはリストの末尾に追加できないのですが、これは便利に使えるように"Add"メソッド兼用にしています。
また、既存のリストの中に同じファイル名があるかどうかを探すのに、検索機能を持つ"IndexOf"メソッドを実装します。リストの各項目には、派生クラスからは"List"プロパティを使ってアクセスすることができます。さらに外部からもアクセスするために、デフォルトプロパティを定義しておく必要があります。