自定义UserControl的属性为什么不能在设计时显示在属性窗口中
2005-02-03 19:38
549 查看
自定义UserControl的属性为什么不能在设计时显示在属性窗口中 解决方法:
假如你写了一个自定义控件,类名为MyUserControl, 文件名为MyUserControl.ascx, 命名空间为MyWeb.Controls。然后你将MyUserControl拖到一个WebForm上,会自动生成:
<%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="MyUserControl" Src="MyUserControl.ascx" %>
将上面的语句改为
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
这样,就会在属性窗口看到你定义的属性。
<%@ Register TagPrefix="uc1" Namespace="JiTongWeb.Controls" Assembly="JiTongWeb"%>
问题解决过程:
这个问题困扰了我很久,以前我只能手动写代码给自己写的UserControl的属性赋值。昨天,我下定决心一定要解决这个问题,在网上找了很多文章,按照文章中的代码作了很多次修改,比如:在类名前加
[ System.ComponentModel.Designer(typeof(System.Web.UI.Design.ControlDesigner)),
ToolboxData("<{0}:ImageList runat=/"server/" />") ]
我总以为是UserControl本身定义的问题,所以把注意力集中在UserControl的代码上, 而这是一个错误的方向,无论我怎么努力,也不能解决问题。后来,我想到.Text中有一个能在设计时显示属性的分页控件,我为何不参考一下,我按照它改写了自己的控件,可放到WebForm上后还是不能看到属性,然后,我查看了WebForm中自动生成的代码, 发现了不同之处,我按照上面的方法改了一下,问题就解决了。而且在UserControl中,不需要对属性作特别的设置, 只要是public属性都会显示在属性窗口中。
在学习过程中,实践显得多么重要,比如上面的问题,仅仅看看相关文章,你觉得很简单,如果你不写代码去试一下,根本不会发现这个问题。
“DUDU的说法不对,只需要一行就行了
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
要注意Namespace和Assembly的设置,你的控件如果有特殊的命名空间,则要设置好,Assembly一般是web应用程序的命名空间,例如myweb,如果控件和应用程序都在同一个命名空间,则设置成一样。
而且控件要经过编译,里面的属性才能在属性窗口显示出来,可以用重新生成工程来编译程序。
注意一定要是 属性 才能显示出来,一般的public是不能显示出来的,要使用get和set。
欢迎大家和我讨论.net的问题,我的blogs是:http://blog.csdn.net/delphier
http://www.cnblogs.com/wwwljx”
假如你写了一个自定义控件,类名为MyUserControl, 文件名为MyUserControl.ascx, 命名空间为MyWeb.Controls。然后你将MyUserControl拖到一个WebForm上,会自动生成:
<%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="ImageList" Src="Controls/ImageList.ascx" %><%@ Register TagPrefix="uc1" TagName="MyUserControl" Src="MyUserControl.ascx" %>
将上面的语句改为
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
这样,就会在属性窗口看到你定义的属性。
<%@ Register TagPrefix="uc1" Namespace="JiTongWeb.Controls" Assembly="JiTongWeb"%>
问题解决过程:
这个问题困扰了我很久,以前我只能手动写代码给自己写的UserControl的属性赋值。昨天,我下定决心一定要解决这个问题,在网上找了很多文章,按照文章中的代码作了很多次修改,比如:在类名前加
[ System.ComponentModel.Designer(typeof(System.Web.UI.Design.ControlDesigner)),
ToolboxData("<{0}:ImageList runat=/"server/" />") ]
我总以为是UserControl本身定义的问题,所以把注意力集中在UserControl的代码上, 而这是一个错误的方向,无论我怎么努力,也不能解决问题。后来,我想到.Text中有一个能在设计时显示属性的分页控件,我为何不参考一下,我按照它改写了自己的控件,可放到WebForm上后还是不能看到属性,然后,我查看了WebForm中自动生成的代码, 发现了不同之处,我按照上面的方法改了一下,问题就解决了。而且在UserControl中,不需要对属性作特别的设置, 只要是public属性都会显示在属性窗口中。
在学习过程中,实践显得多么重要,比如上面的问题,仅仅看看相关文章,你觉得很简单,如果你不写代码去试一下,根本不会发现这个问题。
“DUDU的说法不对,只需要一行就行了
<%@ Register TagPrefix="uc1" Namespace="MyWeb.Controls" Assembly="MyWeb"%>
要注意Namespace和Assembly的设置,你的控件如果有特殊的命名空间,则要设置好,Assembly一般是web应用程序的命名空间,例如myweb,如果控件和应用程序都在同一个命名空间,则设置成一样。
而且控件要经过编译,里面的属性才能在属性窗口显示出来,可以用重新生成工程来编译程序。
注意一定要是 属性 才能显示出来,一般的public是不能显示出来的,要使用get和set。
欢迎大家和我讨论.net的问题,我的blogs是:http://blog.csdn.net/delphier
http://www.cnblogs.com/wwwljx”
相关文章推荐
- 自定义UserControl的属性为什么不能在设计时显示在属性窗口中
- 自定义UserControl的属性为什么不能在设计时显示在属性窗口中
- 自定义控件时怎么让自定义的属性在属性窗口中显示
- 为什么有时候CAD属性块的中的属性文字不能显示呢?
- 为什么控件的有些属性在代码中可用,但是在设计界面的属性窗口中就没有
- VS2005为什么有些解决方案不能生成,显示已跳过,也不能编译?打开属性,总是报错。
- 使用vs2003 编程时, 控件的属性窗口不能显示
- 自定义UserControl中包含封装了集合对象的属性被设计器自动初始化所引起的错误
- 自定义菜单时点击Menu后,自定义菜单显示,但是activity窗口没获得焦点。为什么?
- 文件版通讯录 附加Makefile 同时请大佬们帮我修改一下,为什么不能显示出年龄,谢谢
- VS2005为什么有些解决方案不能生成,显示已跳过,也不能编译?
- 富文本(TYAttributedLabel 简单,强大的属性文本控件(无需了解CoreText),支持图文混排显示,支持添加链接,image和UIView控件,支持自定义排版显示)
- VS2005为什么有些解决方案不能生成,显示已跳过,也不能编译?
- 泛型窗体继承时不能在设计器中显示,为神马?
- 为什么不能自定义java.lang.String
- 设计器弹出窗口信息无法显示
- 为什么我设置了<a>标签target="_self"后,还是不能在当前窗口打开.
- 为什么在一个线程中不能调用显示另一个窗体?
- 使用属性动画以及自定义view实现图片的显示与隐藏
- PowerDesigner 设计概念模型时属性不能重名的解决方案