4

ログインボタンまたは「VISITANT」ボタンを押した後に呼び出される「ログインウィンドウ」と「メインウィンドウ」があります。

ログインボタンを押すとシステム全体が出てきて、VISITANTボタンを押すと1つのタブが消えたりブロックされたりします。

private void visitant(object sender, EventArgs e)
{
        mainwindow menu = new mainwindow();
        menu.Show();

        //mainwindow.tabPage1.Enabled = false; //attempt1
        //mainwindow.tabPage1.Visible = false; //attempt1

        //System.Windows.Forms.tabPage1.Enabled = false;//attempt2
        //System.Windows.Forms.tabPage1.Visible = false;//attempt2

        this.Hide();
}

私がattempt1を使用するために得るエラーは

エラー1'System.mainwindow.tabPage1'は、その保護レベルのためにアクセスできません'
エラー2非静的フィールド、メソッド、またはプロパティ'System.mainwindow.tabPage1'にはオブジェクト参照が必要です

そして、attempt2を使用するために私が得るものは

エラー1タイプまたは名前空間の名前'tabPage1'が名前空間'System.Windows.Forms'に存在しません(アセンブリ参照がありませんか?)

ご想像のとおり、「tabPage1」は訪問者ボタンを押すときに非表示にする必要のあるタブです。

これ以上の詳細は考えられません。追加情報を提供するために周りにいます

前もって感謝します。

4

3 に答える 3

3

フォームに追加するコントロールは、デフォルトでは一般公開されていません。この詳細を除いて、「attempt1」コードは正しいコードになります。

編集:このように修正するには、の「Modifiers」プロパティをまたはに変更しますtabPage1PublicこれInternalにより、他のクラスがフォームの外部からこれらのコントロールを表示できるようになります。)

ただし、これらのコントロールを表示するよりも優れたアプローチは、次のような新しいパブリックメソッドをmainwindowクラスに作成することです。

public void HideTab()
{
   tabPage1.Enabled = false;
   tabPage1.Visible = false;
}

次に、サンプルコードで、フォームを作成/表示した後、新しいメソッドを呼び出します。

 mainwindow menu = new mainwindow();
 menu.Show();
 menu.HideTab();
于 2010-04-26T13:04:36.017 に答える
0

tabControl1と呼ばれるtabPagesにSystem.Windows.Forms.TabControlを使用していると仮定すると、次を使用します。

tabControl1.TabPages.Remove(tabPage1);

tabPage1を再度表示する場合は、次を使用します。

tabControl1.TabPages.Add(tabPage1);
于 2010-04-26T13:00:16.813 に答える
0

パブリックプロパティを宣言して、タブコントロールを公開する必要があります。次に、menuどちらのインスタンスを使用してアクセスできます。

より良いオプションは、メインウィンドウで次のようなプロパティを公開することです。

public bool ShowTabPage1 { get; set; }

次に、それをtrueまたはfalseに設定します

private void visitant(object sender, EventArgs e)
{
        mainwindow menu = new mainwindow();
        menu.ShowTabPage1 = false;
        menu.Show();         

        this.Hide();
}

最後に、メインウィンドウフォームのロードイベントでロジックを適用します。

于 2010-04-26T13:07:59.597 に答える