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

 更新时间:2015年09月17日 12:01:25   投稿:lijiao  
有人曾经提出开发一个根据不同选择而显示不同颜色的管理工具,本文主要就是演示如何读取系统颜色并在下拉框中的每个条目中显示对应的颜色,需要的朋友可以参考下

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

   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中的GridView分页问题

    asp.net中的GridView分页问题

    这篇文章主要介绍了asp.net中的GridView分页问题,实例讲述了采用GridView分页出现的问题及对应的解决方案,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • ASP.net百度主动推送功能实现代码

    ASP.net百度主动推送功能实现代码

    百度站长工具的主动推送功能,以最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录
    2020-09-09
  • asp.net 网页编码自动识别代码

    asp.net 网页编码自动识别代码

    另外一位网友空间/IV提供的代码,功能同HttpWebRequest获取网页源代码时自动识别网页编码
    2008-09-09
  • 轻量级ORM框架Dapper应用之返回多个结果集

    轻量级ORM框架Dapper应用之返回多个结果集

    这篇文章介绍了使用Dapper返回多个结果集的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • ASP.NET实现图片以二进制的形式存入数据库

    ASP.NET实现图片以二进制的形式存入数据库

    这篇文章主要介绍了ASP.NET实现图片以二进制的形式存入数据库,有一定的学习借鉴价值,需要的朋友可以参考下
    2014-08-08
  • GridView单元格合并

    GridView单元格合并

    合并单元格 合并某一行的所有列
    2008-12-12
  • 如何在ASP.NET Core中使用Session的示例代码

    如何在ASP.NET Core中使用Session的示例代码

    这篇文章主要介绍了如何在ASP.NET Core中使用Session的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • ASP.NET Core全面扫盲贴

    ASP.NET Core全面扫盲贴

    本篇文章主要介绍了.NET Core,.NET Core是一个开源通用的开发框架,支持跨平台,即支持在Window,macOS,Linux等系统上的开发和部署有兴趣的可以了解一下。
    2017-03-03
  • 在ASP.Net Core中使用Lamar的全过程

    在ASP.Net Core中使用Lamar的全过程

    这篇文章主要给大家介绍了关于在ASP.Net Core中使用Lamar的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 一个ASP.Net下的WebShell实例

    一个ASP.Net下的WebShell实例

    一个ASP.Net下的WebShell,主要完成cmd命令。一般的服务器设置,asp.net用户的权限都比较高。如果asp的webshell无法执行,可能asp.net的可以执行。
    2013-07-07

最新评论