方法 : タブ ページを無効化する
状況によっては、Windows フォーム アプリケーション内で使用できるデータへのアクセスを制限する必要があります。 タブ コントロールのタブ ページに表示されるデータがその一例です。タブ ページの情報の中には、管理者がゲストや低いレベルのユーザーによるアクセスを制限する必要があると考える情報もあります。
タブ ページをプログラムで無効にするには
タブ コントロールの SelectedIndexChanged イベントを処理するコードを記述します。 このイベントは、ユーザーが 1 つのタブから次のタブに切り替えたときに発生します。
資格情報を確認します。 ユーザーに対してタブを表示する前に、提供される情報に応じて、そのユーザーがログインに使用したユーザー名や、その他の形式の資格情報を確認します。
ユーザーの資格情報が適切である場合は、クリックされたタブを表示します。 ユーザーが適切な資格情報を持っていない場合は、アクセス権がないことをメッセージ ボックスなどのユーザー インターフェイスで示し、最初のタブに戻ります。
注意
この機能を実際のアプリケーションに実装する場合には、この資格情報チェックをフォームの Load イベントで実行できます。 このイベントを実行すると、ユーザー インターフェイスが表示される前にタブを非表示にできます。こちらの方が洗練されたプログラミング方法です。 SelectedIndexChanged イベントで資格情報を確認してタブを無効にする次の手順は、説明のために示しています。
オプションとして、タブ ページが 3 つ以上ある場合には、元のタブ ページと異なるタブ ページを表示できます。
次の例では、タブにアクセスするための条件がアプリケーションによって異なるため、資格情報を確認する代わりに CheckBox コントロールが使用されています。 SelectedIndexChanged イベントが発生すると、資格情報チェックが true であり (つまり、チェック ボックスがオンであり)、選択されたタブが TabPage2 (この例では機密情報を含むタブ) である場合は、TabPage2 が表示されます。 それ以外の場合は TabPage3 が表示され、適切なアクセス権限がないことを示すメッセージ ボックスがユーザーに表示されます。 次のコードでは、フォームに CheckBox コントロール (CredentialCheck) と、3 つのタブ ページを含む TabControl コントロールがあると仮定しています。
Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged ' Check Credentials Here If CredentialCheck.Checked = True And _ TabControl1.SelectedTab Is TabPage2 Then TabControl1.SelectedTab = TabPage2 ElseIf CredentialCheck.Checked = False _ And TabControl1.SelectedTab Is TabPage2 Then MessageBox.Show _ ("Unable to load tab. You have insufficient access privileges.") TabControl1.SelectedTab = TabPage3 End If End Sub
private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e) { // Check Credentials Here if ((CredentialCheck.Checked == true) && (tabControl1.SelectedTab == tabPage2)) { tabControl1.SelectedTab = tabPage2; } else if ((CredentialCheck.Checked == false) && (tabControl1.SelectedTab == tabPage2)) { MessageBox.Show("Unable to load tab. You have insufficient access privileges."); tabControl1.SelectedTab = tabPage3; } }
private: System::Void tabControl1_SelectedIndexChanged( System::Object ^ sender, System::EventArgs ^ e) { // Check Credentials Here if ((CredentialCheck->Checked == true) && (tabControl1->SelectedTab == tabPage2)) { tabControl1->SelectedTab = tabPage2; } else if ((CredentialCheck->Checked == false) && (tabControl1->SelectedTab == tabPage2)) { MessageBox::Show(String::Concat("Unable to load tab. ", "You have insufficient access privileges.")); tabControl1->SelectedTab = tabPage3; } }
(Visual C#、Visual C++) フォームのコンストラクターに次のコードを挿入してイベント ハンドラーを登録します。
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
this->tabControl1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::tabControl1_SelectedIndexChanged);
参照
処理手順
方法 : Windows フォーム TabControl のタブを追加および削除する
方法 : Windows フォーム TabControl の表示形式を変更する