- 題名: TabControlのタブを非表示にしたい
- 日時: 2003/09/08 19:31:31
- ID: 607
- この記事の返信元:
- (なし)
- この記事への返信:
- [608] Re[1]: TabControlのタブを非表示にしたい2003/09/08 21:05:52
- ツリーを表示
分類:[.NET]
毎度ありがとうございます。どらごらです。 > Remove以外には手はないと思います。 > 非表示したいTabPageへの参照をTabPageコレクション以外に > 別の変数にも保持しておけば、RemoveしてもそのTabPageがなくなりませんし。 > 表示するときはその別の変数のTabPageをAddしなおせばOKです。 以下できました。ありがとうございました。 'タブページ Private FTabIndex As Integer Private FTabPages() As TabPage ... Try ReDim FTabPages(TabControl.TabPages.Count - 1) For I = TabControl.TabPages.Count - 1 To 0 Step -1 FTabPages(I) = TabControl.TabPages(I) TabControl.TabPages.RemoveAt(I) Next Catch End Try FTabIndex = 0 TabControl.TabPages.Add(FTabPages(FTabIndex)) ... Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click If FTabIndex < UBound(FTabPages) Then FTabPages(FTabIndex) = TabControl.TabPages(0) TabControl.TabPages.RemoveAt(0) FTabIndex += 1 TabControl.TabPages.Add(FTabPages(FTabIndex)) End If End Sub Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click If FTabIndex > 0 Then FTabPages(FTabIndex) = TabControl.TabPages(0) TabControl.TabPages.RemoveAt(0) FTabIndex -= 1 TabControl.TabPages.Add(FTabPages(FTabIndex)) End If End Sub ----- ふとここに貼り付けて思ったのですが、これってインスタンスを 変数に格納しているから、自分で解放しないとまずいですよね^^;
> フォームのPrivate変数ならこのフォームのインスタンスが解放されるときにTabPageの配列も解放されます。 > フォームが生きている間にTabPageがまったくいらなくなるというのはたぶんないですよね? 無いですね。自動的に解放されるんだ。。。 ここらへんはDelphiとは違うんですね。C#でもそうなんですか? それとも、Javaのガーベジコレクションに近いのかな? 以前メモリーリーク起こしていたのが、こんな感じで起こしていたのを 発見したので。 現状ではFormのDisposed時にNothingではないですが、解放しています。 詳しくメモリーの状況を調べてないですが、特に問題がなさそうなので 必須とはいわないが、あったほうが精神衛生上楽(?)な気持ちでこのままにします。 やっぱりGUIで作成したのは別として、自分でインスタンスを生成または保持して いるのは、自分で解放ってのが無難かなとも思います。 Private Sub FrmUserEdit_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Disposed Dim I As Integer For I = 0 To UBound(FTabPages) FTabPages(I).Dispose() Next End Sub