ASP.NET多彩下拉框开发实例

所属分类: 网络编程 / ASP.NET 阅读数: 433
收藏 0 赞 0 分享

本文主要是演示如何读取系统颜色并在下拉框中的每个条目中显示对应的颜色,该源码主要展示以下内容:

   1、如何获得System.Drawing.KnownColor颜色控件的列表枚举

   2、如何排除系统环境颜色,如“Active Border”

   3、如何分配颜色到下拉框的每个条目  

代码详解:

   命名下拉框为ddlMultiColor 来显示颜色名称及颜色,用<div>标签显示右侧矩形结果,Aspx代码如下

 <table> 
 <tr> 
 <td> 
 <asp:DropDownList ID ="ddlMultiColor" 
 OnSelectedIndexChanged="ddlMultiColor_OnSelectedIndexChanged" 
 runat="server" AutoPostBack="true"> 
 </asp:DropDownList> 
 </td> 
 <td> 
 <div id="msgColor" runat="server"> 
 </div> 
 </td> 
 </tr> 
 </table>

 在cs文件中我们需要引用以下命名空间:

 using System; 
 using System.Web; 
 using System.Reflection; 
 using System.Drawing; 
 using System.Collections.Generic;

我们先看一下Page_Load事件,在Page_Load中我们对选中的下拉列表进行处理显示

 protected void Page_Load(object sender, EventArgs e) 
 { 
 if (Page.IsPostBack == false) 
 { 
 populateDdlMultiColor(); //51aspx.com 
 colorManipulation(); 
 } 
 }

  现在让我们来看一下populateDdlMultiColor() 函数

 private void populateDdlMultiColor() 
 { 
 ddlMultiColor.DataSource = finalColorList(); 
 ddlMultiColor.DataBind(); // 
 }

 finalColorList()方法

 private List finalColorList() 
 { 
 string[] allColors = Enum.GetNames(typeof(System.Drawing.KnownColor)); 
 string[] systemEnvironmentColors = 
 new string[( 
 typeof(System.Drawing.SystemColors)).GetProperties().Length]; 
 
 int index = 0; 
 
 foreach (MemberInfo member in ( 
 typeof(System.Drawing.SystemColors)).GetProperties()) 
 { 
 systemEnvironmentColors[index ++] = member.Name; 
 } 
 List finalColorList = new List(); 
 foreach (string color in allColors) 
 { 
 if (Array.IndexOf(systemEnvironmentColors, color) < 0) 
 { 
 finalColorList.Add(color); 
 } 
 } 
 return finalColorList; 
 }

System.Drawing.KnownColor是Asp.net系统本身自带颜色,我已经通过枚举列出了这些颜色并通过 finalColorList()函授进行绑定。为了实现该功能,我使用了最基本的枚举特征之一:Enum.GetNames() 共享方法,该方法对枚举内容进行检测并输出结果为字符串序列,该字符串中每个值都对应枚举中的每个结果。

 然而,该方法还是有些问题的。按照上面的思路,枚举金额过中会包括系统环境颜色,比如“Active Border(注:活动边框)”,为了解决该问题,我扩展了系统环境颜色。我用了System.Reflection.MemberInfo类。

 这里我用System.Drawing.SystemColors属性填充systemEnvironmentColors ,然后创建一个名称为finalColorList 的图形列表,在finalColorList 中我只调用已知颜色,但是不在系统环境颜色中。然后把finalColorList绑定到ddlMultiColor中。至此,我们已经有了一个包括全部颜色名称的下拉框,下面让我们来操作一下:

 private void colorManipulation() 
 { 
 int row; 
 for (row = 0; row < ddlMultiColor.Items.Count - 1; row++) 
 { 
 ddlMultiColor.Items[row].Attributes.Add("style", 
 "background-color:" + ddlMultiColor.Items[row].Value); 
 } 
 ddlMultiColor.BackColor = 
 Color.FromName(ddlMultiColor.SelectedItem.Text);//liudao翻译 
 }

下拉框中的每一行背景颜色的Style]属性都与该行显示的颜色名称对应的。在OnSelectedIndexChanged 事件中下拉框中被选中的行通过下面的函数结合<div>标签进行高亮显示,同时右侧的矩形颜色也随之变化。

 protected void ddlMultiColor_OnSelectedIndexChanged(object sender, 
 EventArgs e) 
 { 
 ddlMultiColor.BackColor = Color.FromName(ddlMultiColor.SelectedItem.Text); 
 colorManipulation(); 
 ddlMultiColor.Items.FindByValue(ddlMultiColor.SelectedValue).Selected = 
 true; 
 msgColor.Attributes.Add("style", "background:" + 
 ddlMultiColor.SelectedItem.Value + ";width:30px;height:25px;"); 
 }

至此,我们学会了如果获取System.Drawing并排出系统环境颜色,并绑定颜色名称到下拉列表。

更多精彩内容其他人还在看

Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制

我们平时一般在做图片或者文件下载权限控制的时候基本都是控制到下载页面的,当你的下载地址暴露后,浏览者就直接可以通过文件地址进行下载了,这时候也就出现了我们常说的盗链
收藏 0 赞 0 分享

在ASP.NET中下载文件的实现代码

通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始。当我们要让用户下载一个文件
收藏 0 赞 0 分享

asp.net下日期和时间处理的类库

发一个专门处理时间和日期的类库,记录以备查询
收藏 0 赞 0 分享

LINQ重写博客垃圾图片回收算法

本人博客后台管理模块有个功能,可以扫描图片上传文件夹下所有未被引用的博客
收藏 0 赞 0 分享

C#多线程Singleton(单件)模式模板

下面是一个C#多线程单件模式的代码模板。把T换成你自己的类型就可以使用了。其精妙之处就在于用lock语句锁定资源来避免多线程同时走入if语句去创建多个对象
收藏 0 赞 0 分享

URL重写及干掉ASP.NET试图状态的实现方法

URL重写已经很普遍了,但基本上大部分的URL重写都不支持页面的相对路径,所有如果想在已经开发好的项目中添加还是有压力的,第二就是例如微软的那个URL重写是根据正则表达式来处理的,那样是很好,但也有不足之处,就是不方便定位到某个页面只能有哪些参数
收藏 0 赞 0 分享

正则方式的自动小偷抓网程序

公司里面有许多数据没人去录入,做一个抓取网页的程序,以前做CMS系统的时候涉及过,不过这次的处理HTML上和以前做了些区别
收藏 0 赞 0 分享

asp.net生成缩略图实现代码

此文件imgSmall.ashx专门用来生成图片的缩略图,可以减少服务器压力,降低网络流量,初学者必备
收藏 0 赞 0 分享

asp.net richTextBox中高亮显示选中字符串或文本

最近开发程序需要对一段文本中的某个字符串进行高亮显示,网上找了下资料
收藏 0 赞 0 分享

ASP.net的验证控件浅析

前些天在做注册页面的验证的时候,用了下ASP.net的验证控件,有一些体会,特写下这篇博客,如果有朋友有不同ideas,欢迎大家留言
收藏 0 赞 0 分享
查看更多