如何找到UserControl的名称

本文关键字:UserControl 何找 | 更新日期: 2023-09-27 18:04:58

我在一个名为FirstUserControl和LastUserControl的网页中重复了2次UserControl。

当用户正在改变FirstUserControl中的Textbox的值时,我们如何识别用户当前正在处理FirstUserControl。我的意思是如何在UserControl的change event中获得UserControl的名称为"FirstUserControl"

下面是一个示例代码。需要识别UserControl。

protected void txtAmount_TextChanged(object sender, EventArgs e)
{
    string ControlName = UserControl.Name;
    if(ControlName == "FirstUserControl")
        Response.Write ("You are working on FirstUserControl")
    if(ControlName == "LastUserControl")
        Response.Write ("You are working on LastUserControl")
}

如何找到UserControl的名称

sender参数包含对对象的引用,表示触发此事件的YourUserControl

所以,你应该像下面这样修改你的代码来获得控件的父控件(或其他):
protected void txtAmount_TextChanged(object sender, EventArgs e)
{
    Control control = (TextBox)sender;
    while (control as YourUserControl == null)
    {
        control = control.Parent;
    }
    
    string ControlName = ((YourUserControl)control).Name;
    if(ControlName == "FirstUserControl")
        Response.Write ("You are working on FirstUserControl")
    if(ControlName == "LastUserControl")
        Response.Write ("You are working on LastUserControl")
}

根据msdn:

基于服务器的ASP。.NET Web Forms页面和控件事件遵循事件处理程序方法的标准。NET框架模式。

所有事件都传递两个参数:一个是表示引发事件的对象的对象,另一个是包含任何事件特定信息的事件对象。