次の方法で共有


方法 : タブ ページを無効化する

状況によっては、Windows フォーム アプリケーション内で使用できるデータへのアクセスを制限する必要があります。 タブ コントロールのタブ ページに表示されるデータがその一例です。タブ ページの情報の中には、管理者がゲストや低いレベルのユーザーによるアクセスを制限する必要があると考える情報もあります。

タブ ページをプログラムで無効にするには

  1. タブ コントロールの SelectedIndexChanged イベントを処理するコードを記述します。 このイベントは、ユーザーが 1 つのタブから次のタブに切り替えたときに発生します。

  2. 資格情報を確認します。 ユーザーに対してタブを表示する前に、提供される情報に応じて、そのユーザーがログインに使用したユーザー名や、その他の形式の資格情報を確認します。

  3. ユーザーの資格情報が適切である場合は、クリックされたタブを表示します。 ユーザーが適切な資格情報を持っていない場合は、アクセス権がないことをメッセージ ボックスなどのユーザー インターフェイスで示し、最初のタブに戻ります。

    注意

    この機能を実際のアプリケーションに実装する場合には、この資格情報チェックをフォームの Load イベントで実行できます。 このイベントを実行すると、ユーザー インターフェイスが表示される前にタブを非表示にできます。こちらの方が洗練されたプログラミング方法です。 SelectedIndexChanged イベントで資格情報を確認してタブを無効にする次の手順は、説明のために示しています。

  4. オプションとして、タブ ページが 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 の表示形式を変更する

参照

TabControl コントロールの概要 (Windows フォーム)