개발 배경:
누군가 나에게 다양한 선택에 따라 다양한 색상을 표시하는 관리 도구를 개발해 달라고 요청한 적이 있습니다. 드롭다운 상자를 사용하여 항목 이름에 따라 항목의 배경과 표시 색상을 변경하는 것을 고려하기 시작했고, 이 아이디어를 바탕으로 오랫동안 온라인으로 검색했지만 관련 솔루션을 찾을 수 없었습니다. 원래 원했던 솔루션(데이터베이스 포함)보다 더 복잡했기 때문에 더 간단한 구현을 찾으려고 노력했습니다.
이 문서에서는 주로 시스템 색상을 읽고 드롭다운 상자의 각 항목에 해당 색상을 표시하는 방법을 보여줍니다. 소스 코드는 주로 다음 내용을 보여줍니다.
1. System.드로잉.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="서버">
</div>
</td>
</tr>
</table>
cs 파일에서 다음 네임스페이스를 참조해야 합니다.
using System;
System.Web 사용;
System.Reflection 사용;
System.드로잉 사용;
System.Collections.Generic을 사용합니다.
먼저 Page_Load 이벤트를 살펴보겠습니다. Page_Load에서는 선택한 드롭다운 목록을 처리하고 표시합니다.
protected void Page_Load(개체 전송자, EventArgs e)
{
if (Page.IsPostBack == false)
{
populateDdlMultiColor(); //51aspx.com
colorManipulation();
}
}
이제 populateDdlMultiColor() 함수를 살펴보겠습니다.
private void populateDdlMultiColor()
{
ddlMultiColor.DataSource = finalColorList();
ddlMultiColor.DataBind() //liudao 번역
}
finalColorList() 메서드
비공개 목록 finalColorList()
{
string[] allColors = Enum.GetNames(typeof(System.드로잉.KnownColor));
문자열[] systemEnvironmentColors =
새로운 문자열[(
typeof(System.드로잉.SystemColors)).GetProperties().Length]
int index = 0
(MemberInfo 멤버)
typeof(System.드로잉.SystemColors)).GetProperties())
{
systemEnvironmentColors[index ++] = 구성원.이름;
}
목록 finalColorList = new List();
foreach(allColors의 문자열 색상)
{
if (Array.IndexOf(systemEnvironmentColors, color) < 0)
{
finalColorList.Add(color);
}
}
finalColorList를 반환합니다.
}
System.드로잉.KnownColor는 Asp.net 시스템 자체와 함께 제공되는 색상입니다. 열거를 통해 이러한 색상을 나열하고 finalColorList() 대응을 통해 바인딩했습니다. 이 기능을 구현하기 위해 가장 기본적인 열거 기능 중 하나인 Enum.GetNames() 공유 메서드를 사용했습니다. 이 메서드는 열거 내용을 감지하고 결과를 문자열 시퀀스로 출력하며 문자열의 각 값은 각 결과에 해당합니다. 열거에서.
그러나 이 접근 방식에는 몇 가지 문제가 있습니다. 위의 아이디어에 따라 열거량에는 "활성 테두리(참고: 활성 테두리)"와 같은 시스템 환경 색상이 포함됩니다. 이 문제를 해결하기 위해 시스템 환경 색상을 확장했습니다. System.Reflection.MemberInfo 클래스를 사용했습니다.
여기에서는 systemEnvironmentColors를 System. Drawing.SystemColors 속성으로 채운 다음 finalColorList라는 그래픽 목록을 만듭니다. finalColorList에서는 알려진 색상만 호출하고 시스템 환경 색상에서는 호출하지 않습니다. 그런 다음 finalColorList를 ddlMultiColor에 바인딩합니다. 이제 모든 색상 이름이 포함된 드롭다운 상자가 이미 있습니다.
http://www.downcodes.com/
개인 무효 색상 조작()
{
int 행;
for(행 = 0; 행 < ddlMultiColor.Items.Count - 1; 행++)
{
ddlMultiColor.Items[row].Attributes.Add("스타일",
"배경색:" + ddlMultiColor.Items[row].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.Draw를 가져와서 시스템 환경 색상을 배출하고 색상 이름을 드롭다운 목록에 바인딩하는 방법을 배웠습니다.