代码改变世界

自定义控件无法在工具箱中显示

2006-05-04 15:42  晓风残月  阅读(...)  评论(... 编辑 收藏

当我们需要设置一个邮件链接的时候,通常可以如下:

1.HTML

<href="mailto:mymail@com.com">mymail@com.com</a>

2.HyperLink

<asp:hyperlink  navigateurl="mailto:mymail@com.com" text="mymail@com.com" runat="server" />

 不管怎么样,每次都需要手动的添加"mailto",因此准备开发一个邮件链接控件,只要对该控件的MailAddress赋邮件地址就可以了,风格与HyperLink,虽然该控件使用频度并不高!

代码如下:

using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Digbus.Web.Controls
{
    [ToolboxData(
"<{0}:MailLink runat=\"server\" />")]
    
class MailLink : HyperLink
    
{
        
private const string MAIL_TO = "mailto:";

        
protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
        
{
            
base.NavigateUrl = MAIL_TO + mailAddress;

            
base.RenderContents(writer);
        }


        
private string mailAddress;
        
public string MailAddress
        
{
            
get return mailAddress; }
            
set { mailAddress = value; }
        }
        
    }

}

编译正常通过!
但是,将dll添加到工具箱中,始终显示不了MailLink控件。
以为是VS的问题,重启VS,Toolbox中出现了MailLink,但是没有办法托拽到编辑器中。^||^

切换到Code View,可以托拽到HTML中了,但是“砰”:


关于“无效的  FORMATETC 结构”,在asp.net forum上也有同样的问题,但是没有解决方案:Invalid FORMATETC structure (Exception from HRESULT: 0x80040064(DV_E_FORMATETC))

等待高手解决~~