我创建了一个 UserControl,其中包含一个ListView
。ListView 可通过属性公开访问。当我将 UserControl 放入一个表单并尝试设计该ListView
属性时,ListView
它会一直保持这种状态,直到我再次编译它并恢复为默认状态。
如何让我的设计更改坚持下去ListView
?
我创建了一个 UserControl,其中包含一个ListView
。ListView 可通过属性公开访问。当我将 UserControl 放入一个表单并尝试设计该ListView
属性时,ListView
它会一直保持这种状态,直到我再次编译它并恢复为默认状态。
如何让我的设计更改坚持下去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)上的“修改器”属性更改为 Public - 这样您就可以直接在 UserControl 的实例上修改 ListView。无论如何,我已经成功地做到了。