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;
}