【发布时间】:2011-03-30 05:26:34
【问题描述】:
我正在尝试编写一段代码来设置表单中 92 个图片框的图像。我不想写同一段代码 92 次,所以我想知道这是否可以更快地完成。我的代码是:
public void drawRoute()
{
if (route1.line_00_R == null)
{
this.tabMap.Controls.Remove(this.line_00_R);
}
else if (route1.line_00_R == "Blue")
{
this.tabMap.Controls.Add(this.line_00_R);
this.line_00_R.Image = global::MijnenvegerController.Properties.Resources.Blue;
}
else if (route1.line_00_R == "Red")
{
this.tabMap.Controls.Add(this.line_00_R);
this.line_00_R.Image = global::MijnenvegerController.Properties.Resources.Red;
}
}
我希望这样的事情是可能的:
public void drawRoute()
{
for (//all values of {0})
{
if (route1.{0} == null)
{
this.tabMap.Controls.Remove(this.{0});
}
else
{
{1} = route1.{0}; // string that is the same as the name of the resource
this.tabMap.Controls.Add(this.{0});
this.{0}.Image = global::MijnenvegerController.Properties.Resources.{1};
}
}
}
其中 {0} 和 {1} 是某种占位符或变量。
希望有人可以帮助我。我这周才开始使用 C#,所以我希望这不是一个愚蠢的问题。提前感谢所有帮助!
编辑
我找到了我认为可以使用的东西,但我不知道如何实现它:
public Control[] Find(
string key,
bool searchAllChildren
)
Control.ControlCollection.Find Method (http://msdn.microsoft.com)
我意识到我现在可以这样做。但我已经使用 Disigner 制作了所有不同的 PictureBox。我现在使用这段代码以一种非常肮脏的方式“解决”了:
` 公共无效drawRoute() { drawRoad(route1.line_00_R, this.line_00_R); drawRoad(route1.line_00_U, this.line_00_U); drawRoad(route1.line_01_D, this.line_01_D); drawRoad(route1.line_01_R, this.line_01_R);
// 等等等等 92 次!
drawRoad(route1.line_6, this.line_6);
drawRoad(route1.line_7, this.line_7);
drawRoad(route1.line_8, this.line_8);
drawRoad(route1.line_9, this.line_9);
drawRoad(route1.line_10, this.line_10);
drawRoad(route1.line_11, this.line_11);
drawRoad(route1.line_12, this.line_12);
}
public void drawRoad(string color, PictureBox control)
{
if (color == null)
{
this.tabMap.Controls.Remove(control);
}
else if (color.Equals("Blue"))
{
this.tabMap.Controls.Add(control);
control.Image = global::MijnenvegerController.Properties.Resources.Blue;
}
else if (color.Equals("DarkRed"))
{
this.tabMap.Controls.Add(control);
control.Image = global::MijnenvegerController.Properties.Resources.DarkRed;
}
else if (color.Equals("Indigo"))
{
this.tabMap.Controls.Add(control);
control.Image = global::MijnenvegerController.Properties.Resources.Indigo;
}
else if (color.Equals("GreyBlue"))
{
this.tabMap.Controls.Add(control);
control.Image = global::MijnenvegerController.Properties.Resources.GreyBlue;
}
else if (color.Equals("Gold"))
{
this.tabMap.Controls.Add(control);
control.Image = global::MijnenvegerController.Properties.Resources.Gold;
}
else if (color.Equals("Orange"))
{
this.tabMap.Controls.Add(control);
control.Image = global::MijnenvegerController.Properties.Resources.Orange;
}
}
`
【问题讨论】:
标签: c# edit picturebox reusability