[英]issue with Calling user control public functions from main form in ASP.net C#
[英]Public Methods inside User control c# .net
如何從頁面內部調用用戶控件的公共方法?
我在頁面上的OnInit內部動態加載控件。有什么想法嗎? 由於某種原因,我收到一個生成錯誤,指出該方法不存在,即使它是公共的。 開始認為用戶控件不值得所有麻煩。
你說過
Control fracTemplateCtrl =
(FracTemplateCtrl)LoadControl("FracTemplateCtrl.ascx")
fracTemplateCtrl.TestMethod();
你需要說
FracTemplateCtrl fracTemplateCtrl =
(FracTemplateCtrl)LoadControl("FracTemplateCtrl.ascx")
fracTemplateCtrl.TestMethod();
請注意, fracTemplateCtrl is
聲明為FracTemplateCtrl
,因此Visual Studio知道它具有TestMethod()
。 當將其聲明為Control
,Visual Studio無法做出此假設。
您是否將用戶控件轉換為正確的類型?
沒有示例代碼,很難確定,但是我想您需要將對UserControl的引用轉換為自定義控件的特定類型。 例如,如果您的UserControl的類型為“ PersonControl”,則您的代碼將如下所示:
PersonControl ctl = (PersonControl)LoadControl("PersonControl.ascx");
ctl.DoCustomMethod();
如果您的類是從UserControl繼承的,請確保在訪問它時(如其他人所說的那樣)正確投射了它。 例如:
public MyControl : UserControl
{
public void MyMethod(){...}
}
以您的形式:
private MyControl mycontrol = new MyControl();
private void MainForm()
{
this.Controls.Add(mycontrol);
InitializeComponent();
}
private void DoStuff()
{
((MyControl)mycontrol).MyMethod();
}
Mike的回答是如何完成的,但是Visual Studio對於檢測UserControl類可能有點不了解,並抱怨該類型不存在。 在這種情況下,即使必須在web.config中引用它,也必須在頁面上添加<% @Reference %>
標記以強制其識別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.