我有一组TextBoxes和一组DropDownLists。当你从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;
}
}
}
}
}发布于 2011-11-24 03:49:50
从根本上说,这根本不是关于字典-它是关于在TextBox或DropDownList上调用ToString()将返回什么……听起来它继承了System.Object的实现,它只返回类型名。
不清楚您真正想要做的是什么,但是听起来您想要ID属性而不是ToString()
Label1.Text = txtbox.ID;
Label2.Text = list.ID;就我个人而言,我可能不希望I本身成为UI的一部分,但这是另一回事。
发布于 2011-11-24 03:49:54
以下几行似乎就是问题所在:
Label1.Text = txtbox.ToString();
Label2.Text = list.ToString();试试这个(如果你需要这些值,否则请参考Jon Skeet的答案)
Label1.Text = txtbox.Text;
Label2.Text = list.SelectedValue;https://stackoverflow.com/questions/8248184
复制相似问题