回答つけるのやめよう。

先日某掲示板であがったスレについての感想を。


タブ追加をクリックしたらに作った新しく作ったタブをアクティブしたいのですが調べてもわからなかったため質問させて頂きます。
とのこと。見た時点で土曜日だったし、レスも付いてなかったのでなんとかご協力を、と思い、こんな感じでサンプル作りました。

[Visual Basic]

' Form1にButton1とTabControl1をデザイナから追加しました。

Imports System
Imports System.Windows.Forms


Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim tp As New TabPage("TabPage")

Me.TabControl1.TabPages.Add(tp)

' tpを選択する。
Me.TabControl1.SelectedTab = tp

End Sub


End Class

でもってこの辺りは解決なさったようでしたが、追加で質問があがっていました。(他の方のレスによるフォロー感謝♪)

タブ追加したらそのタブをアクティブにすることはできましたが
ファイルの名前付けて保存する際には、新しくタブ追加した部分しかできませんでした…

新しく追加した部分以外でも選択中のタブのテキストボックスの中身だけファイルの保存ができるにはどうすればいいのでしょうか。

・・・テキストボックスってなんだ?と思ってスレ主のコードを見てみる。(引用なので見難くてすみません。m(_ _)m)

クラス変数の方に
Dim tBox As TextBox
Friend WithEvents Tb As System.Windows.Forms.TextBox



Private Sub Tab_Open() 'タブ追加用
'クリックしたらタブ追加と同時に新しく作ったタブをアクティブにする。

'タブの追加
Tb = New TextBox
Dim Tab As New TabPage

TabControl1.TabPages.Add(Tab) 'タブコントロールにタブを貼り付ける

With Tab
.Text = "無題" & .TabIndex 'タブの名前(確認用)
.Controls.Add(Tb) 'タブにテキストボックスを貼り付ける。
.TabIndex = TabIndex + 1
End With

With Tb
.Dock = DockStyle.Fill
.Location() = New Point(0, 0)
.ScrollBars = ScrollBars.Both

.AcceptsReturn = True
.MaxLength = 0
.WordWrap = False
.Multiline = True
.AllowDrop = True
End With
End Sub

あぁ、TabPageに追加したやつなのね。要するに一つの変数に生成したテキストボックスのインスタンスを毎回格納してしまっていて最新のインスタンス以外参照が取れないのよ、と。なるほど。
で、自信なくサンプルコードを置いてみる。

[Visual Basic]


Public Class MyTabPage
Inherits TabPage

Private WithEvents _textBox As TextBox

Public Property TextBoxText() As String
Get
Return Me._textBox.Text
End Get
Set(ByVal value As String)
Me._textBox.Text = value
End Set
End Property

Public Sub New()

Me.New(String.Empty)

End Sub


Public Sub New(ByVal name As String)
MyBase.New(name)

Me._textBox = New TextBox

With Me._textBox

.Dock = DockStyle.Fill
.Location() = New Point(0, 0)
.ScrollBars = ScrollBars.Both

.AcceptsReturn = True
.MaxLength = 0
.WordWrap = False
.Multiline = True
.AllowDrop = True

End With

Me.Controls.Add(Me._textBox)

End Sub



' Form1にはTabControl1、Button1、Button2、NumericUpDown1をデザイナから追加しました。
' NumericUpDown1で選択した値をIndexに持つTabPageのTextBox.Textプロパティをメッセージボックスに表示します。

Public Class Form1


Public Sub New()
MyBase.new()

InitializeComponent()
Me.NumericUpDown1.Enabled = False
Me.NumericUpDown1.Minimum = 0

Me.Button2.Enabled = False

End Sub



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim tp As New MyTabPage("MyTabPage")

Me.TabControl1.TabPages.Add(tp)

' tpを選択する。
Me.TabControl1.SelectedTab = tp

Me.NumericUpDown1.Maximum = Me.TabControl1.TabPages.Count - 1
Me.NumericUpDown1.Enabled = True

Me.Button2.Enabled = True

End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim tabPageIndex As Decimal = Me.NumericUpDown1.Value

Dim selectedTabPage As MyTabPage = DirectCast(Me.TabControl1.TabPages(CInt(tabPageIndex)), MyTabPage)

' selectedTabPage.TextBoxTextが指定したTabPageのTextBox.Textプロパティです。
MessageBox.Show(selectedTabPage.TextBoxText)

End Sub


End Class

もっと簡単にできるんじゃないですかねぇ・・・。他の回答者さんの回答とは方向性が違うようでしたし。
で、エントリとして書きたかったのはこれに対するスレ主のレス。

こんにちは。
凄い!まさにこれです!!!

実は、先生にも聞いてみたのですがわからないとの一言でしたので
とても助かりました。

#すみません、先生というのは私の学校に通ってる先生のことです

ちょ、先生・・・わからないですか?こんなことしなくても出来るよって言ってくださいよ・・・。
ということで、回答つけるのやめよう、提示したコードが自分以外のところで書かれることが怖くなっちゃいました、というお話。