2012-02-20 107 views
0

我創作自定義主題/控件時需要爲用戶選擇.ico文件(Windows圖標文件)的控件創建屬性。它應該像一個選擇窗體的背景屬性。接受,這僅限於.ico文件。 到目前爲止,我有這樣的代碼:C#創建自定義控件的文件屬性瀏覽

private string IconLocation; 
public string CustomIcon 
{ 
    get 
    { 
     return IconLocation; 
    } 
    set 
    { 
     IconLocation = value; 
    } 
} 

無論說,這並不因爲我想工作,我也發現了這個代碼:

[DefaultValue(""), Editor("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor)), UrlProperty, WebSysDescription("Image_ImageUrl"), Bindable(true), WebCategory("Appearance")] 
public virtual string ImageUrl 
{ 
    get 
    { 
     string str = (string) this.ViewState["ImageUrl"]; 
     if (str != null) 
     { 
      return str; 
     } 
    return string.Empty; 
    } 
    set 
    { 
     this.ViewState["ImageUrl"] = value; 
    } 
} 

從得到:http://forums.asp.net/t/1335659.aspx

這也不起作用,由於視圖狀態不可用,所以我如何實現一個正常的C#自定義屬性的文件選擇?

回答

0

嗯,想通了,好像沒有文件,但這是如何做到這一點:

private Icon IconLocation; 
public Icon CustomIcon 
{ 
    get 
    { 
     return IconLocation; 
    } 
    set 
    { 
     IconLocation = value; 
    } 
} 
1

我試圖創建自己的UITypeEditor從UrlEditor衍生出ImgageUrlEditor並試圖使用這一個。但是,這絕對沒有影響。

[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] 
public class IconUrlEditor : UrlEditor 
{ 
    protected override string Filter 
    { 
     get 
     { 
      return "Icon Files (*.ico)|*.ico"; 
     } 
    } 
} 

我還設置了UrlProperty的過濾器屬性。這似乎也沒有效果。

public partial class WebUserControl1 : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Image1.ImageUrl = ImageUrl; 
    } 

    [Editor(typeof(IconUrlEditor), typeof(UITypeEditor)), UrlProperty("*.ico")] 
    public virtual string ImageUrl { get; set; } 
} 

要麼我缺少一些東西,要麼這些濾鏡屬性在內部都沒有使用。

+0

至少你嘗試過:) – Annabelle 2012-02-21 01:56:16

+1

還請注意,我沒有圖標的網址分配給直接使用ViewState,因爲ViewState在設計時不可用。相反,我只是將它存儲在自動實現的屬性ImageUrl中,並將其加載到Page_Load的Image控件中。 – 2012-02-21 13:48:04