【问题标题】:Call UserControl method from Its parent page从其父页面调用 UserControl 方法
【发布时间】:2011-06-16 10:53:36
【问题描述】:

我有这样一种方法来从其用户控件调用父页面方法。这个“DisplayMessage”函数只接受一个字符串变量消息并将其显示在屏幕上。 在用户控件中,我放置了一个文本框和一个按钮。在按钮的单击事件中,我使用反射调用我们上面讨论的父页面方法并将文本框的值传递给方法,然后调用该方法并将消息显示在屏幕上。

父页面:

public void DisplayMessage(string message)
{
   Response.Write(message);
}

用户控制:

protected void btnSend_Click(object sender, EventArgs e)
{
    this.Page.GetType().InvokeMember("DisplayMessage",System.Reflection.BindingFlags.InvokeMethod, null, this.Page, new object[] { txtMessage.Text });
}

它对我来说很好用。

现在我需要的是,我必须从其父页面调用 UserControl 中存在的方法。

请给我建议。提前致谢。

【问题讨论】:

    标签: c# user-controls parent-child


    【解决方案1】:

    当您将控件放在页面上时,您将ID="" 属性设置为变量名称,您可以使用该变量名称从页面内引用它。

    如果你的页面是这样的:

    <my:UserControl runat="server" ID="myControl" />
    

    那么你可以这样做:

    myControl.MyControlMethod()
    

    在用户控件中从父级调用的方法必须是公共的。如果它是私有的或受保护的,则无法从父级调用该方法。

    另外,不是通过反射调用页面函数,而是you might be better off using events

    【讨论】:

      【解决方案2】:

      this.Page 将为您提供对页面对象的引用。

      如果您在基本页面中实现 DisplayMessage,然后从该页面继承。

      您可以将 this.Page 转换为 BasePage,然后以这种方式调用该方法 :)

      if(this.Page is BasePage)
      {
         BasePage bs = this.Page as BasePage
      
         bs.DisplayMessage(....)   
      }
      

      【讨论】:

        【解决方案3】:

        我想我找到了最最简单的方法

        只需在用户控件的构造函数中传递父级的引用即可。

        this.animationControl = new VideoEditor.AnimationControl(this);
        

        并且在用户控件的构造函数中,将父窗体的引用保存在局部变量中

        public AnimationControl(Form1 form)
        {
                _form1 = form;
                // other initialization stuff
        }
        

        现在通过这个局部变量 '_form1' 从父类访问任何东西

        示例

        _form1.MessageFromAnimationControl(choosenAnim);
        

        访问子级中的父级变量/方法或将子级的变量发送给父级。

        我希望它会帮助某人:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-05
          • 2011-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多