C# 我想通过从下拉列表中选择颜色来更改面板的背景色

C# 我想通过从下拉列表中选择颜色来更改面板的背景色,c#,asp.net,C#,Asp.net,我正在编写代码,允许用户选择页面背景的颜色(下拉列表),问题是我从库系统中获取了已知的颜色。绘图,我不知道如何从列表中获取该值。我怎么能做到 受保护的无效页面加载(对象发送方、事件参数e) { if (!IsPostBack) { string[] colorArray = Enum.GetNames(typeof(KnownColor)); drpBack.DataSource = colorArray;

我正在编写代码,允许用户选择页面背景的颜色(下拉列表),问题是我从库系统中获取了已知的颜色。绘图,我不知道如何从列表中获取该值。我怎么能做到

受保护的无效页面加载(对象发送方、事件参数e) {

        if (!IsPostBack)
        {
            string[] colorArray = Enum.GetNames(typeof(KnownColor));
            drpBack.DataSource = colorArray;
            drpBack.DataBind();}
//页面加载,在这里我取了颜色的名称

//这是按钮更新

protected void btnUpdate_Click(object sender, EventArgs e){
        string back = drpBack.Text;
        Color style = (Color)Enum.Parse(typeof(Color), back);
        pnlCard.BackColor = style;}
当我单击按钮更新时,它会给我错误:提供的类型必须是枚举


我尝试编写而不是颜色-KnownColor它给了我一个信息:无法将类型“KnownColor”隐式转换为“Color”

您应该将输入解析回
KnownColor
。然后您可以使用以下方法从此值创建
Color

{未测试}
protected void btnUpdate_Click(object sender, EventArgs e){
        string back = drpBack.Text;
        var parsedColor = (KnownColor)Enum.Parse(typeof(KnownColor), back);
        var style = Color.FromKnownColor(parsedColor);
        pnlCard.BackColor = style;
}