本文主要是演示如何读取系统颜色并在下拉框中的每个条目中显示对应的颜色,该源码主要展示以下内容:
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并排出系统环境颜色,并绑定颜色名称到下拉列表。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】