Как извлечь веб-элементы управления из словаря? - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть набор TextBox es и набор DropDownList s.Когда вы выбираете значение из DropDownList, оно меняет цвет фона соответствующего TextBox.

. Чтобы упростить это, я попытался создать Dictionary<TextBox, DropDownList>, но свойство Key имеет значение System.Web.UI.WebControls.TextBox и свойство Value равно System.Web.UI.WebControls.DropDownList, вместо TextBox1 и DropDownList1.

Как мне выполнить итерацию по Dictionary, чтобы правильно установить значения TextBox и DropDownList?

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;
                }
            }
        }
    }
}

Ответы [ 2 ]

4 голосов
/ 23 ноября 2011

По сути, речь идет вовсе не о словарях, а о том, что будет возвращать вызов ToString() на TextBox или DropDownList ... и похоже, что он наследует реализацию от System.Object, которая просто возвращает имя типа.

Непонятно, что вы на самом деле пытаетесь сделать, но похоже, что вы хотите свойство ID вместо ToString():

Label1.Text = txtbox.ID;
Label2.Text = list.ID;

Лично я, вероятно, не хотел бы, чтобы идентификаторы были частью пользовательского интерфейса как такового, но это другой вопрос.

2 голосов
/ 23 ноября 2011

Эти строки кажутся проблемой:

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

попробуйте это (если вам нужны значения, в противном случае обратитесь к ответу Джона Скита)

Label1.Text = txtbox.Text;
Label2.Text = list.SelectedValue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...