簡體   English   中英

如何從另一個用戶控件中隱藏用戶控件?

[英]How to hide User control from another user control?

我在C#的學校項目中工作,但是有問題。 我做了一個用戶控件,其中有一些按鈕,這就像帶有按鈕的橫幅。 這些按鈕應顯示和隱藏其他用戶控件

這是我的帶有按鈕的用戶控件中的代碼:

 Reports ra = new Reports();
 PurchaseReport rb = new PurchaseReport();

比在按鈕之一中我編寫了以下代碼:

 ra.Hide();

 rb.Show();
 this.Controls.Add(rb);
 rb.Location = new Point(130, 153);

但是問題在於它沒有隱藏報告(ra)。 並且它不顯示購買報告(rb)。 問題是什么?

public partial class MenuUserC : UserControl
{

    Reports ra = new Reports();
    PurchaseReport rb = new PurchaseReport();

    public MenuUserC()
    {
        InitializeComponent();
    }

    private void ButtonItem15_Click(object sender, EventArgs e)
    {
        rb.Hide();

        ra.Show();
        this.Controls.Add(ra);
        ra.Location = new Point(130, 153);
    }

    private void ButtonItem1_Click(object sender, EventArgs e)
    {

        ra.Hide();

        rb.Show();
        this.Controls.Add(rb);
        rb.Location = new Point(130, 153);

    }

通常,您不希望一個控件知道另一控件。 使您的自定義控件在發生有趣的事情時公開事件,並讓應用程序代碼處理顯示/隱藏其他控件的邏輯。

例如:

MyUserControl ctl = new MyUserControl;
ctl.OnHideReports += OnHideReports;
ctl.OnShowReports += OnShowReports;
...

然后在OnHideReports的事件處理程序中,處理邏輯:

void OnHideReports(...)
{
    _reports.Hide();
    _purchaseReports.Show();
    ...
}

另外,嘗試使用WinForm設計器將用戶控件添加到窗體中。 與直接在代碼中聲明它們相比,使用設計器中的控件要容易得多。

更新:

此示例在窗體上有兩個按鈕,外加兩個用戶控件。 單擊按鈕1時,它顯示用戶控件1並隱藏用戶控件2。單擊按鈕2時,它執行相反的操作。 請注意,按鈕和用戶控件是使用Forms設計器添加到表單的,而不是通過代碼手動添加的。 這將進行定位,將它們作為子控件添加到主窗體等中。除非您有充分的理由,否則請不要使用自己的代碼手動添加它們。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void UiButtonOneClick(object sender, EventArgs e)
    {
        myUserControlOne.Show();
        myUserControlTwo.Hide();
    }

    private void UiButtonTwoClick(object sender, EventArgs e)
    {
        myUserControlOne.Hide();
        myUserControlTwo.Show();
    }
}

嘗試對其他對象使用hide方法和show方法

您正在創建用戶控件的新實例

相反,您需要這樣的東西

Reports ra = (Reports)Page.FindControl("Reports1");//Reports1 should be the name the controls renders in the browser

這將使您可以訪問頁面上的實例,而我的語法可能會略有下降,這是我上一次在VB中這樣做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM