C# 从其父页调用UserControl方法
我得到了这样一种方法,从用户控件调用父页面方法。这个“DisplayMessage”函数只接受字符串变量消息并将其显示在屏幕上。 在用户控件中,我放置了一个文本框和一个按钮。在按钮的click事件中,我使用反射调用上面讨论的父页面方法,并将文本框的值传递给该方法,然后调用该方法,并在屏幕上显示消息 父页面:C# 从其父页调用UserControl方法,c#,user-controls,parent-child,C#,User Controls,Parent Child,我得到了这样一种方法,从用户控件调用父页面方法。这个“DisplayMessage”函数只接受字符串变量消息并将其显示在屏幕上。 在用户控件中,我放置了一个文本框和一个按钮。在按钮的click事件中,我使用反射调用上面讨论的父页面方法,并将文本框的值传递给该方法,然后调用该方法,并在屏幕上显示消息 父页面: public void DisplayMessage(string message) { Response.Write(message); } 用户控制: protected voi
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" />
从父控件在用户控件中调用的方法必须是公共的。如果该方法是私有的或受保护的,则无法从父级调用该方法
此外,this.page将为您提供对页面对象的引用,而不是通过反射调用页面函数 如果您在基本页中实现DisplayMessage,然后从中继承 您可以将此.Page强制转换为BasePage,然后以这种方式调用该方法:)
我想我找到了最简单的方法 只需在用户控件的构造函数中传递父控件的引用
this.animationControl = new VideoEditor.AnimationControl(this);
在用户控件的构造函数中,将父窗体的引用保存在局部变量中
public AnimationControl(Form1 form)
{
_form1 = form;
// other initialization stuff
}
现在通过这个局部变量“\u form1”从父类访问任何内容
示例
_form1.MessageFromAnimationControl(choosenAnim);
访问子对象中的父对象变量/方法,或将子对象的变量发送给父对象
我希望它能帮助某人:)
public AnimationControl(Form1 form)
{
_form1 = form;
// other initialization stuff
}
_form1.MessageFromAnimationControl(choosenAnim);