• ベストアンサー

vb .net TabControlの制御

vb .net系 Windows アプリケーション TabControlのTabPageを画面操作では変更できないようにしたいです。 可能でしょうか? TabPage上のTextBoxなどには入力可能な状態だけど、TabPageは変更できない。 という状態にしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

TabControlのタブを選択できないようにする http://dobon.net/vb/dotnet/control/tabdisabledpage.html を参考にして。

webuser
質問者

お礼

有難う御座います。 Selectingを使う方法を試しました。 'TabControl1のSelectingイベントハンドラ Private Sub TabControl1_Selecting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting  '2番目のタブを選択できないようにする  If e.TabPageIndex = 1 Then   e.Cancel = True  End If End Sub 特定のタブへの移動を禁止するのではなく、 手動クリックでのタブ移動は全て禁止はするが、 Me.TabControl1.SelectedIndex = 1 のようにPGM内での入力はOK という状態にしたかったのですが、 Private Sub TabControl1_Selecting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting  e.Cancel = True End Sub こうしたら、一切動かなくなって困りました。 仕方なく、フラグをかまして Friend FrdBooTabControl1 As Boolean Private Sub TabControl1_Selecting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting  ' サブを通して来た時以外はキャンセルする  If Not FrdBooTabControl1 Then   e.Cancel = True  End If End Sub サブから呼び出したときだけ切り替わるようにしました ''' <summary> ''' TabPageの切り替えを一時許可してSelectedIndexをセット ''' </summary> ''' <param name="p01"></param> ''' <remarks></remarks> Private Sub SubChngTabControl1(ByVal p01 As Integer)  FrdBooTabControl1 = True  Me.TabControl1.SelectedIndex = p01  FrdBooTabControl1 = False End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click  ' Me.TabControl1.SelectedIndex = 1  SubChngTabControl1(1) End Sub うまくいきました。