从其父页调用UserControl方法
本文关键字:UserControl 方法 调用 | 更新日期: 2023-09-27 17:59:21
我得到了这样一种方法,从它的用户控件调用Parent Page方法。这个"DisplayMessage"函数只接受字符串变量消息并将其显示在屏幕上。在用户控件中,我放置了一个文本框和一个按钮。在按钮的点击事件中,我使用反射调用上面讨论的Parent Page方法,并将文本框的值传递给该方法,然后调用该方法,并在屏幕上显示消息。
父页面:
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的父页面调用一个存在于其中的方法。
请推荐我。提前谢谢。
当您将控件放在页面上时,无论您将ID=""
属性设置为什么,都是可以用于在页面内引用它的变量名。
所以,如果你的页面看起来像这样:
<my:UserControl runat="server" ID="myControl" />
然后你可以做:
myControl.MyControlMethod()
在用户控件中从父控件调用的方法必须是公共的。如果它是私有的或受保护的,则不能从父级调用该方法。
此外,与其通过反射调用页面函数,不如使用事件。
this.Page将为您提供对页面对象的引用。
如果在基页中实现DisplayMessage,然后从中继承。
你可以投这个。Page作为BasePage,然后以这种方式调用方法:)
if(this.Page is BasePage)
{
BasePage bs = this.Page as BasePage
bs.DisplayMessage(....)
}
我想我找到了最最简单的方法
只需在用户控件的构造函数中传递父级的引用。
this.animationControl = new VideoEditor.AnimationControl(this);
并且在用户控件的构造函数中保存局部变量中父窗体的引用
public AnimationControl(Form1 form)
{
_form1 = form;
// other initialization stuff
}
现在通过这个局部变量"_form1"访问父类中的任何内容
示例
_form1.MessageFromAnimationControl(choosenAnim);
访问child中的parents变量/方法,或将child的变量发送给parent。
我希望它能帮助到某人:)