![](/img/trans.png)
[英]How to Hide a ModalPopupExenter that has a User Control from another page?
[英]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.