我在一个名为FirstUserControl和LastUserControl的网页中重复了两次UserControl。
当用户在FirstUserControl中更改Textbox的值时,我们如何识别用户当前正在使用FirstUserControl。我的意思是如何将UserControl的名称作为" FirstUserControl"在UserControl的更改事件中。
以下代码是一个示例。需要在此识别UserControl.Name。
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")
}
答案 0 :(得分:0)
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窗体页面和控件事件遵循事件处理程序方法的标准.NET Framework模式。
所有事件都传递两个参数:一个表示引发事件的对象的对象,以及一个包含任何特定于事件的信息的事件对象。