我在我的页面上有一个Label控件和自定义UserControl。我想要的是,当UserControl出现某些内容时,它就会改变,例如Label的Text属性(正如我所提到的,Label不属于UserControl)。怎么做 ?ASP.NET如何通过自定义UserControl更改页面控件?
2
A
回答
2
一个用户控件应该是可重复使用,因此要正确地做到这一点,你应该使用一个事件从用户控件的页面钩到,即:
public NewTextEventArgs : EventArgs
{
public NewTextEventArgs(string newText)
{
_newText = newText;
}
public NewText
{
get { return _newText; }
}
}
然后将下面的事件添加到您的用户控件:
public event OnNewText NewText;
public delegate void OnNewText(object sender, NewTextEventArgs e);
然后火从用户控件的事件:
private void NotifyNewText(string newText)
{
if (NewText != null)
{
NewText(this, new NewTextEventArgs(newText));
}
}
然后强制牛逼消耗你的网页,事件和用户控件和页面不再紧密耦合:
然后处理该事件和文本设置为您的标签:
protected void YourControl1_NewText(object sender, NewTextEventArgs e)
{
Label1.Text = e.NewText;
}
2
你最好的选择是使用某种事件来通知UserControl已更新的包含页面。
public class MyControl : UserControl {
public event EventHandler SomethingHappened;
private void SomeFunc() {
if(x == y) {
//....
if(SomethingHappened != null)
SomethingHappened(this, EventArgs.Empty);
}
}
}
public class MyPage : Page {
protected void Page_Init(object sender, EventArgs e) {
myUserControl.SomethingHappened += myUserControl_SomethingHappened;
}
private void myUserControl_SomethingHappened(object sender, EventArgs e) {
// it's Business Time
}
}
这仅仅是一个基本的例子,但我个人建议使用设计器界面来指定用户控件的事件处理程序,以便分配获取你的设计师处理的后台代码,而不是一个你的工作英寸
+0
我认为是这样,但是如何在我的页面上捕获此事件? – Tony 2010-07-23 08:49:42
1
您可以通过从您的自定义UserControl中引发事件来点。然后拦截事件和页面可以相应地修改标签的Text属性:
0
您可以使用页面属性来访问页面包含用户控件的。请尝试:
((Page1)this.Page).Label1.Text =“Label1 Text”;
相关问题
- 1. 为ASP.NET页面指定自定义资源文件/ usercontrol
- 2. ASP.NET在父页面上获取UserControl自定义事件VB
- 3. 通过代码更改自定义控件文本块的值
- 4. 如何在选择usercontrol时禁用ASP.NET页面中的控件?
- 5. 更改自定义404错误页面
- 6. 如何通过C#代码更改自定义WPF控件中的BitmapEffect
- 7. 自定义控件不是usercontrol
- 8. modalpopupextender asp.net usercontrol页面
- 9. 页面更改事件ASP.NET
- 10. ASP.net Web窗体自定义控件自动更改下一个控件的ID
- 11. 如何从aspx页面访问userControl中的web控件页面
- 12. Xamarin.iOS更改bordercolor为自定义控件
- 13. 在内容页面上通过DropDownList更改动态控件
- 14. 如何自定义页面?
- 15. ASP.NET自定义控件XML
- 16. ASP.NET自定义控件
- 17. ASP.Net自定义控件
- 18. ASP.NET自定义控件
- 19. ASP.NET自定义控件 - DataBinding
- 20. ASP.NET Web自定义控件
- 21. 如何通过PHPMailer链接自定义的“已发送”页面
- 22. 如何在aspx页面中隐藏ASP.NET自定义控件的属性?
- 23. 如何在ASP.net自定义控件之间进行通信
- 24. 如何将数据库错误页面更改为自定义错误页面?
- 25. 未定义ASP.NET UserControl?
- 26. 更新面板导致与usercontrol自定义事件全回发
- 27. ASP.NET自定义控件控件状态
- 28. 如何通过绑定通过自定义控件上的XAML传递CommandParameter
- 29. 如何通过JavaScript更改HTML自定义属性值?
- 30. 如何通过自定义渐变更改strokeColor
@Nathan Taylor - 我删除了最初的答案,并换成了更好的事件驱动的答案。 – GenericTypeTea 2010-07-23 08:55:30
好东西!只是一个快速提示,通用EventHandler不再需要为您的自定义eventargs类创建委托。你可以简单地做'公共事件EventHandler NotifyNewText;' –
2010-07-23 16:41:14
@Nathan - 谢谢。我不知道! – GenericTypeTea 2010-07-23 18:12:59