- ベストアンサー
vb .net TabControlの制御
vb .net系 Windows アプリケーション TabControlのTabPageを画面操作では変更できないようにしたいです。 可能でしょうか? TabPage上のTextBoxなどには入力可能な状態だけど、TabPageは変更できない。 という状態にしたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
TabControlのタブを選択できないようにする http://dobon.net/vb/dotnet/control/tabdisabledpage.html を参考にして。
お礼
有難う御座います。 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 うまくいきました。