開発背景:
かつてある人から、さまざまな選択に基づいてさまざまな色を表示する管理ツールを開発してほしいと頼まれました。この考えに基づいて、ドロップダウン ボックスを使用して、項目名に基づいて項目の背景と表示色を変更することを検討し始めましたが、長い間オンラインで検索しましたが、最終的に適切な解決策を思いつきました。当初望んでいたソリューション (データベースを含む) よりも複雑だったので、よりシンプルな実装を見つけようとしました。
この記事では、主にシステム カラーを読み取り、ドロップダウン ボックスの各エントリに対応する色を表示する方法を説明します。ソース コードは主に次の内容を示します。
1. System.Drawing.KnownColor カラー コントロールのリスト列挙体を取得する方法
2.「アクティブボーダー」などのシステム環境色を除外する方法
3. ドロップダウンボックスの各項目に色を割り当てる方法
コードの詳細な説明:
ドロップダウン ボックスに ddlMultiColor という名前を付けて、色の名前と色を表示します。 <div> タグを使用して、右側に長方形の結果を表示します。
<table>
は次のとおりです。
<tr>
<td>
<asp:DropDownList ID="ddlMultiColor"
OnSelectedIndexChanged="ddlMultiColor_OnSelectedIndexChanged"
runat="サーバー" AutoPostBack="true">
</asp:ドロップダウンリスト>
</td>
<td>
<div id="msgColor" runat="server">
</div>
</td>
</tr>
</table>
cs ファイルでは、次の名前空間を参照する必要があります
。
System.Web を使用します。
System.Reflection を使用します。
System.Drawing を使用します。
System.Collections.Generic を使用します。
まず Page_Load イベントを見てみましょう。 Page_Load では、選択されたドロップダウン リストを処理して表示します。
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
if (Page.IsPostBack == false)
{
PopulateDdlMultiColor(); //51aspx.com
colorManipulation();
}
関数
を見てみましょう
。
{
ddlMultiColor.DataSource = FinalColorList();
ddlMultiColor.DataBind(); //リウダオ翻訳
FinalColorList
() メソッド
プライベート リスト FinalColorList()
{
string[] allColors = Enum.GetNames(typeof(System.Drawing.KnownColor));
string[] systemEnvironmentColors =
新しい文字列[(
typeof(System.Drawing.SystemColors)).GetProperties().Length];
int インデックス = 0
(MemberInfo メンバー)
typeof(System.Drawing.SystemColors)).GetProperties())
{
systemEnvironmentColors[index ++] = member.Name;
リスト
finalColorList = new List();
foreach (allColors の文字列の色)
{
if (Array.IndexOf(systemEnvironmentColors, color) < 0)
{
FinalColorList.Add(色);
}
}
FinalColorList を返します。
}
System.Drawing.KnownColor は、Asp.net システム自体に付属する色です。列挙によってこれらの色をリストし、finalColorList() 対応によってバインドしました。この関数を実現するために、最も基本的な列挙機能の 1 つである Enum.GetNames() 共有メソッドを使用しました。これは列挙内容を検出し、結果を文字列シーケンスとして出力します。文字列内の各値はそれぞれの結果に対応します。列挙の中で。
ただし、このアプローチにはいくつかの問題があります。上記の考え方により、列挙量には「Active Border (注: Active Border)」などのシステム環境の色が含まれることになります。この問題を解決するために、システム環境の色を拡張しました。 System.Reflection.MemberInfoクラスを使用しました。
ここでは、systemEnvironmentColors に System.Drawing.SystemColors プロパティを設定し、finalColorList という名前のグラフィックス リストを作成します。finalColorList では、システム環境の色ではなく、既知の色のみを呼び出します。次に、finalColorList を ddlMultiColor にバインドします。この時点で、すべての色の名前を含むドロップダウン ボックスがすでにできています。それでは、次のようにしてみましょう。
http://www.downcodes.com/
private void colorManipulation()
{
整数行;
for (行 = 0; 行 < ddlMultiColor.Items.Count - 1; 行++)
{
ddlMultiColor.Items[行].Attributes.Add("スタイル",
"背景色:" + ddlMultiColor.Items[行].Value);
}
ddlMultiColor.BackColor =
Color.FromName(ddlMultiColor.SelectedItem.Text);//liudao 翻訳
ドロップダウン ボックスの各行の背景色の [スタイル] 属性は、その行に表示される色の名前に対応します
。
OnSelectedIndexChanged イベントでは、次の関数と <div> タグの組み合わせにより、ドロップダウン ボックスで選択された行が強調表示され、右側の四角形の色もそれに応じて変化します。
protected void ddlMultiColor_OnSelectedIndexChanged(オブジェクト送信者,
EventArgs e)
{
ddlMultiColor.BackColor = Color.FromName(ddlMultiColor.SelectedItem.Text);
colorManipulation();
ddlMultiColor.Items.FindByValue(ddlMultiColor.SelectedValue).Selected =
真実;
msgColor.Attributes.Add("スタイル", "背景:" +
ddlMultiColor.SelectedItem.Value + ";幅:30px;高さ:25px;");
ここ
までで、System.Drawing を取得してシステム環境の色を放出し、その色名をドロップダウン リストにバインドする方法を学習しました。