.Net UserControl的设计问题

时间:2020-03-05 18:40:38  来源:igfitidea点击:

我已经创建了一个其中包含" ListView"的UserControl。通过属性可以公开访问ListView。当我将UserControl放入表单中并尝试通过属性设计ListView时,ListView会一直保持这种状态,直到我再次进行编译并将其还原为默认状态。

如何获得对ListView坚持的设计更改?

解决方案

回答

我很清楚,我们已经做了类似的事情,对吧?

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

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

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

回答

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

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

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

回答

从本质上讲,当我们需要使设计器能够将属性持久化到页面以便可以在运行时实例化该属性时,Fredrik是正确的。只有一种方法可以做到这一点,那就是将其值写入ASPX页面,然后由运行时将其拾取。

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

请始终记住,Page(及其内容)和代码在ASP.NET中是完全分开的,它们在运行时是挂钩的。这意味着我们不会像在WinForms应用程序(表单是对象的实例)中那样获得良好的代码隐藏设计器支持。