C# 用户控件的两个实例一个实例对事件作出反应另一个实例don';T

C# 用户控件的两个实例一个实例对事件作出反应另一个实例don';T,c#,winforms,user-controls,C#,Winforms,User Controls,我有一个用户控件。用户控件的两个实例一个实例对事件作出反应,另一个实例不作出反应 一些建议?这是用户控件 名字: <asp:TextBox ID="TextBoxFirstName" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RQV1" runat="server" ControlToValidate="TextBoxFirstName" ErrorMessage="*"><

我有一个用户控件。用户控件的两个实例一个实例对事件作出反应,另一个实例不作出反应


一些建议?

这是用户控件

名字:
<asp:TextBox ID="TextBoxFirstName" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RQV1" runat="server" ControlToValidate="TextBoxFirstName" ErrorMessage="*"></asp:RequiredFieldValidator>
在后面的代码中,我创建了两个公共字符串变量,将值设置为TextBox控件的Text属性,并返回TextBox控件的Text属性

protected void GetCustDetails(object sender, EventArgs e)
{
    Label1.Text = WebUserControl11.GetFirstName;
    Label2.Text = WebUserControl11.GetLastName;
    Label3.Text = WebUserControl12.GetFirstName;
    Label4.Text = WebUserControl12.GetLastName;
}

protected void ClearFields(object sender, EventArgs e)
{
    WebUserControl11.GetFirstName = string.Empty;
    WebUserControl11.GetLastName = string.Empty;
    WebUserControl12.GetFirstName = string.Empty;
    WebUserControl12.GetLastName = string.Empty;
}
然后在主页上,

<form id="form1" runat="server">
<div>This is page to add multiple user controls.</div>
<p>
    Customer1 Details:<br />
    <uc1:WebUserControl1 ID="WebUserControl11" runat="server" />
</p>

<p>
    Customer2 Details:<br />
    <uc1:WebUserControl1 ID="WebUserControl12" runat="server" />           
</p>

<asp:Button ID="Button1" runat="server" Text="Continue" OnClick="GetCustDetails"/>
<asp:Button ID="Button2" runat="server" Text="Clear" CausesValidation="false" OnClick="ClearFields" /><br />

Customer1 FirstName: <asp:label ID="Label1" runat="server"></asp:label><br />
Customer1 LastName: <asp:label ID="Label2" runat="server"></asp:label><br />
Customer2 FirstName: <asp:label ID="Label3" runat="server"></asp:label><br />
Customer2 LastName: <asp:label ID="Label4" runat="server"></asp:label><br />
</form>

如果没有代码指示您订阅事件的位置以及事件处理程序的作用,则无法进行注释。代码太大了。我问的是一般情况。我猜一个用户控件实例拥有所有数据,而另一个则没有。@Ivan-你不需要发布整个内容;这给了我们一些广泛的背景,并说明您实际上是在订阅。事实上,你越能把它简化成一个简单的、可复制的例子——就越好。与其请求代码,你有没有注意到我们不知道它是ASP.NET、WPF还是SL?@Matías;p(当然,也可以是winforms、CF、XNA等)
<form id="form1" runat="server">
<div>This is page to add multiple user controls.</div>
<p>
    Customer1 Details:<br />
    <uc1:WebUserControl1 ID="WebUserControl11" runat="server" />
</p>

<p>
    Customer2 Details:<br />
    <uc1:WebUserControl1 ID="WebUserControl12" runat="server" />           
</p>

<asp:Button ID="Button1" runat="server" Text="Continue" OnClick="GetCustDetails"/>
<asp:Button ID="Button2" runat="server" Text="Clear" CausesValidation="false" OnClick="ClearFields" /><br />

Customer1 FirstName: <asp:label ID="Label1" runat="server"></asp:label><br />
Customer1 LastName: <asp:label ID="Label2" runat="server"></asp:label><br />
Customer2 FirstName: <asp:label ID="Label3" runat="server"></asp:label><br />
Customer2 LastName: <asp:label ID="Label4" runat="server"></asp:label><br />
</form>
protected void GetCustDetails(object sender, EventArgs e)
{
    Label1.Text = WebUserControl11.GetFirstName;
    Label2.Text = WebUserControl11.GetLastName;
    Label3.Text = WebUserControl12.GetFirstName;
    Label4.Text = WebUserControl12.GetLastName;
}

protected void ClearFields(object sender, EventArgs e)
{
    WebUserControl11.GetFirstName = string.Empty;
    WebUserControl11.GetLastName = string.Empty;
    WebUserControl12.GetFirstName = string.Empty;
    WebUserControl12.GetLastName = string.Empty;
}