首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字典中提取Web控件?

如何从字典中提取Web控件?
EN

Stack Overflow用户
提问于 2011-11-24 03:46:45
回答 2查看 83关注 0票数 0

我有一组TextBoxes和一组DropDownLists。当你从DropDownList中选择一个值时,它会改变相应TextBox的背景色。

为了简单起见,我尝试创建一个Dictionary<TextBox, DropDownList>,但是Key属性是System.Web.UI.WebControls.TextBoxValue属性是System.Web.UI.WebControls.DropDownList,而不是TextBox1DropDownList1

我应该如何遍历Dictionary来正确设置TextBoxDropDownList的值?

代码语言:javascript
复制
namespace TextBoxColorPicker
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            get_box_colors();
        }

        protected void get_box_colors()
        {
            var textbox_dict = new Dictionary<TextBox, DropDownList>();

            textbox_dict.Add(TextBox1,DropDownList1);
            textbox_dict.Add(TextBox2,DropDownList2);
            textbox_dict.Add(TextBox3, DropDownList3);

            foreach (KeyValuePair<TextBox, DropDownList> entry in textbox_dict)
            {
                TextBox txtbox = entry.Key;
                DropDownList list = entry.Value;

                Label1.Text = txtbox.ToString();
                Label2.Text = list.ToString();

                if (list.SelectedValue == "R")
                {
                    txtbox.BackColor = System.Drawing.Color.Red;
                }
                else if (list.SelectedValue == "A")
                {
                    txtbox.BackColor = System.Drawing.Color.Gold;
                }
                else if (list.SelectedValue == "G")
                {
                    txtbox.BackColor = System.Drawing.Color.Lime;
                }
                else
                {
                    txtbox.BackColor = System.Drawing.Color.White;
                }
            }
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-11-24 03:49:50

从根本上说,这根本不是关于字典-它是关于在TextBoxDropDownList上调用ToString()将返回什么……听起来它继承了System.Object的实现,它只返回类型名。

不清楚您真正想要做的是什么,但是听起来您想要ID属性而不是ToString()

代码语言:javascript
复制
Label1.Text = txtbox.ID;
Label2.Text = list.ID;

就我个人而言,我可能不希望I本身成为UI的一部分,但这是另一回事。

票数 4
EN

Stack Overflow用户

发布于 2011-11-24 03:49:54

以下几行似乎就是问题所在:

代码语言:javascript
复制
Label1.Text = txtbox.ToString();
Label2.Text = list.ToString();

试试这个(如果你需要这些值,否则请参考Jon Skeet的答案)

代码语言:javascript
复制
Label1.Text = txtbox.Text;
Label2.Text = list.SelectedValue;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8248184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档