場合によっては、Windows フォーム アプリケーション内で使用できるデータへのアクセスを制限する必要があります。 例えば、タブ コントロールのタブページにデータが表示されている場合、管理者はゲストまたは下位レベルのユーザーから制限したい情報をタブページに持っていることがあります。
プログラムでタブ ページを無効にするには
タブ コントロールの SelectedIndexChanged イベントを処理するコードを記述します。 これは、ユーザーが 1 つのタブから次のタブに切り替えたときに発生するイベントです。
資格情報を確認します。 表示される情報に応じて、ユーザーがログインしているユーザー名またはその他の形式の資格情報を確認してから、ユーザーにタブの表示を許可することができます。
ユーザーが適切な資格情報を持っている場合は、クリックされたタブを表示します。 ユーザーが適切な資格情報を持っていない場合は、アクセス権がないことを示すメッセージ ボックスまたはその他のユーザー インターフェイスを表示し、最初のタブに戻ります。
注
運用アプリケーションでこの機能を実装すると、フォームの Load イベント中にこの資格情報チェックを実行できます。 これにより、ユーザー インターフェイスが表示される前にタブを非表示にできます。これは、プログラミングに対するよりクリーンなアプローチです。 以下で使用する手法 (資格情報の確認と SelectedIndexChanged イベント中のタブの無効化) は、説明を目的とします。
必要に応じて、複数のタブ ページがある場合は、元のタブ ページとは異なるタブ ページを表示します。
次の例では、タブへのアクセス条件がアプリケーションによって異なるため、資格情報を確認する代わりに、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 の外観を変更する
.NET Desktop feedback