使用.Net UserControl设计问题

我创建了一个UserControl,里面有一个ListView 。 ListView可通过属性公开访问。 当我将UserControl放在一个表单中并尝试通过属性设计ListViewListView保持这种状态,直到我再次编译并恢复到默认状态。

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

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

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

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

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

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

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

就这样我很清楚,你做过这样的事,对吗?

 public ListView MyListView { get { return this.listView1; } } 

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

我想如果您需要适当的设计时支持,最好将ListView本身(返回原始UserControl)上的“Modifier”属性更改为Public – 这样您就可以直接在UserControl的实例上修改ListView。 无论如何,我已经取得了成功。