从其父页面调用 UserControl 方法

发布于 2024-11-15 11:50:36 字数 603 浏览 1 评论 0原文

我有这样的方法从其用户控件调用父页面方法。这个“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 中存在的方法。

请建议我。提前致谢。

I got an approach like this to call an Parent Page method from its User Control.This "DisplayMessage" function simply accepts a string variable message and displays it on the screen.
In the user control I have placed a textbox and a button. On the click event of the Button I am calling the Parent Page method we discussed above using Reflection and passing the value of the textbox to the method and then the method is invoked and the message is displayed on the screen.

Parent Page:

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

User Control:

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

It works fine for me.

Now what I need is, I have to call a method which exists in UserControl from its parent page.

Please suggest me. Thanks in Advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

玩套路吗 2024-11-22 11:50:36

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

因此,如果您的页面如下所示:

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

那么您可以这样做:

myControl.MyControlMethod()

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

另外,您最好不要使用反射来调用页面函数,使用事件

Whatever you set the ID="" attribute to when you put the control on the page is the variable name you can use to reference it from within the page.

So if your page looks like this:

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

Then you can just do:

myControl.MyControlMethod()

The method being invoked in the user control from the parent must be public. If it's private or protected, the method can't be called from the parent.

Also, instead of invoking page functions via reflection, you might be better off using events.

浮光之海 2024-11-22 11:50:36

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

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

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

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

   bs.DisplayMessage(....)   
}

this.Page will give you a reference to the page object.

If you implement the DisplayMessage in a base page and then inherit from that.

you could cast this.Page as BasePage and then call the method that way :)

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

   bs.DisplayMessage(....)   
}
平安喜乐 2024-11-22 11:50:36

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

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

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

并在用户控件的构造函数中将父表单的引用保存在局部变量中

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

现在通过此局部变量'_form1'访问父类中的任何内容

示例

_form1.MessageFromAnimationControl(choosenAnim);

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

我希望它能帮助别人:)

I guess I found the most easiest way to do it

Just pass the reference of the parent in the constructor of the user control.

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

And In the constructor of user control save the reference of parent form in local variable

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

Now access anything from parent class through this local variable '_form1'

Example

_form1.MessageFromAnimationControl(choosenAnim);

access parents variable/methods in child or send child's variables to parent.

I hope it will help someone :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文