簡體   English   中英

用戶控件內部的公共方法c#.net

[英]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.

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