• MultiMediaControl


    在项目的过程中,我们经常需要显示flash image,视频等一些东西做为banner等。
    这个时候我们希望有一个控件,像Image一样直要传给它ImageUrl就可以自动显示出合适的东西

    [Designer("System.Web.UI.Design.WebControls.PreviewControlDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
        [DefaultProperty(
    "ImageUrl")]
        [ToolboxData(
    "<{0}:MultiMedia runat=server></{0}:MultiMedia>")]
        
    public class MultiMedia : Image
        
    {

            
    public FileType FileType = FileType.Other;


            
    protected virtual void CalculateType()
            
    {
                
    if (!string.IsNullOrEmpty(ImageUrl))
                
    {
                    
    int start = ImageUrl.LastIndexOf('.');
                    
    string type = ImageUrl.Substring(start, ImageUrl.Length - start).ToLower();
                    
    if (type == ".swf")
                    
    {
                        FileType 
    = FileType.Flash;
                    }

                    
    else
                    
    {
                        FileType 
    = FileType.Image;
                    }

                }

            }


            
    protected override void Render(HtmlTextWriter writer)
            
    {
                CalculateType();
                
    switch(FileType)
                
    {
                    
    case FileType.Image:
                        
    base.Render(writer);
                        
    break;
                    
    case FileType.Flash:
                        RenderFlash(writer);
                        
    break;
                }

                
               
            }


            
    public virtual void RenderFlash(HtmlTextWriter output)
            
    {

                
    string url = this.ResolveUrl(ImageUrl);
               
                output.Write(
    "<embed src='"+url+"' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='"+this.Width+"' height='"+this.Height+"' wmode='Opaque'></embed>");

                
            
            }

        }


        
    public enum FileType
        
    {
            Image,
            Flash,
            Other,
        }

    }

    也许你发现了。什么在选择的时候没有发现*.swf 这个时候我们可以自己扩展
    public class MediaUrlFilter : System.Web.UI.Design.UrlEditor
    {

        
    protected override string Filter
        
    {
            
    get
            
    {
                
    return "MultiType (*.swf *.jpg *.gif) |*.swf;*.gif;*.jpg;*.png|All files|*.*";
            }

        }

    }


    并重写
      [Editor(typeof(MediaUrlFilter),typeof(System.Drawing.Design.UITypeEditor))]
            
    public override string ImageUrl
            
    {
                
    get
                
    {
                    
    return base.ImageUrl;
                }

                
    set
                
    {
                    
    base.ImageUrl = value;
                }

            }
    这样我们就可以发现了。

    注意:System.Web.UI.Design 这个命名空间在 System.Design.dll里。需要使用browser把它加进来

    一些需要用到的东西可以自己扩展

    ADD:
       public virtual void RenderVideo(HtmlTextWriter output)
            
    {
                output.NewLine 
    = "\r\n";
                
    string url = this.ResolveUrl(ImageUrl);
                output.Write(
    "<embed src='"+url+"' border='0' width='"+this.Width+"' height='"+this.Height+"' type='application/x-mplayer2'></embed>");
            }

  • 相关阅读:
    nagios对windows流量的检测
    Zabbix中文使用手册
    SNMP的应用
    十大经典排序算法最强总结(含JAVA代码实现)
    各种排序算法总结和比较
    MyBatis的Insert操作详解
    MyBatis 返回insert操作主键
    MyBatis insert/delete/update 的返回值
    利用aopc创建schema失败
    neo4j开发自定义存储过程注意事项
  • 原文地址:https://www.cnblogs.com/lovebanyi/p/897449.html
Copyright © 2020-2023  润新知