.Net UserControl 的设计问题

Posted

技术标签:

【中文标题】.Net UserControl 的设计问题【英文标题】:Design problems with .Net UserControl 【发布时间】:2010-09-06 03:42:39 【问题描述】:

我创建了一个包含ListView 的用户控件。 ListView 可通过属性公开访问。当我将 UserControl 放入表单并尝试通过该属性设计 ListView 时,ListView 会一直保持这种状态,直到我再次编译并恢复为默认状态。

如何让我的设计更改坚持ListView

【问题讨论】:

【参考方案1】:

您需要使用 DesignerSerializationVisibility 属性装饰 ListView 属性,如下所示:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ListView MyListView  get  return this.listView1;  

这告诉设计者的代码生成器为其输出代码。

【讨论】:

【参考方案2】:

Fredrik 是正确的,基本上,当您需要让设计器将属性持久保存到页面以便可以在运行时实例化时。只有一种方法可以做到这一点,那就是将其值写入 ASPX 页面,然后由运行时获取。

否则,控件每次都会简单地恢复到其默认状态。

请始终牢记页面(及其内容)和代码在 ASP.NET 中是完全独立的,它们在运行时是相互关联的。这意味着您不会像在 WinForms 应用程序(其中表单是对象的实例)中那样获得良好的代码隐藏设计器支持。

【讨论】:

【参考方案3】:

我很清楚,你做过这样的事情,对吧?

public ListView MyListView  get  return this.listView1;  

那么您正在访问(在设计时)您的 UserControl 上的 MyListView 属性?

我认为,如果您想要适当的设计时支持,最好将 ListView 本身(返回原始 UserControl)上的“修改器”属性更改为 Public - 这样您就可以直接在用户控件。无论如何,我已经成功了。

【讨论】:

以上是关于.Net UserControl 的设计问题的主要内容,如果未能解决你的问题,请参考以下文章

[ASP.NET]UserControl透过属性,动态加入RequiredFieldValidator

在 WPF 中,如何在设计视图中将样式应用于 UserControl?

Winform异步初始化UserControl的问题

如何在 .NET (C#) 中获取 UserControl 的 HTML 输出?

如何为 ASP.net UserControl 指定命名空间?

在 asp.net 中,如何从 usercontrol 获取自定义 webcontrol 的引用?