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

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

有帮助吗?

解决方案

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

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

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

其他提示

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

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top