使用.Net UserControl设计问题

时间:2008-08-19 04:42:32

标签: c# user-controls .net-2.0

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

如何更改我的设计以适应ListView

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

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

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