改变函数内部的标签属性

时间:2011-10-19 16:11:52

标签: vb.net

我只是想知道这是否可行。我正在尝试验证用户填写的表单,并且当未填写所需的部分时,我会增加

ErrorCount + = 1

变量显示程序内部发生了错误,然后我也设置了

ErrorArray()

到相应的字段编号,现在我有0-12(13个字段)。我所做的还是标题与所有这些字段相关联的标签,以与可能设置的ErrorArray()值相对应,例如。

PatLabel0 PatLabel1等

我要做的是循环遍历数组内容,具体取决于已设置的ErrorArray()值,将该标签的相应fontcolor属性设置为红色,以显示这些现在需要填充出。这就是我所拥有的,但Visual Studio不允许我通过循环使用迭代作为对更改属性的引用。任何人都可以指出我正确的方向试图解决这个问题,或者至少告诉我还能做些什么。只是看起来如果....那么....其他....当1个功能线可以做同样的工作时,每个中有2到3行的语句是多余的。这就是我所拥有的。

for i = 0 to UBound(ErrorArray(12))

if(ErrorArray(i) = "*")then

    PatLabel(i).forecolor = color.red

else

    PatLabel(i).forecolor = color.black

end if

next

这基本上都是我最初寻找的,但我不能这样做。 感谢您提前提供任何帮助,我知道我有另一个类似的帖子提出这个问题,只是认为它可能已被标题化并解释得很差。 -NickG

1 个答案:

答案 0 :(得分:0)

不知道你的代码意味着什么,但这里有一些C#来做这个伎俩...

for(int i = 0; i < ErrorArray.Length; i++)
{
   if(ErrorArray[i] == "*")
   {
      PatLabel(i).ForeColor = Color.Red;
   }
   else
   {
      PatLabel(i).ForeColor = Color.Black;
   }
}

这假设ErrorArray是一个字符串[]或类似的东西(列表等),并且PatLabel是一个函数,它获取控件的索引位置并返回要更改的控件。

如果PatLabel是一个控件数组,你可以像这样更改ForeColor属性......

PatLabel[i].ForeColor = Color.Red;

一个示例函数,可以在给定数字ID ...

的情况下设置控件的属性
void SetControlColor(int i, Color color)
{
    Label label = Panel1.Controls["PatLabel" + i] AS Label;
    if(label != null)
    {
       label.ForeColor = color;
    }
}

然后你可以从上面调用函数for循环,如...

for(int i = 0; i < ErrorArray.Length; i++)
{
   if(ErrorArray[i] == "*")
   {
      SetControlColor(i, Color.Red);
   }
   else
   {
      SetControlColor(i, Color.Black);
   }
}

注意:当我编写初始代码示例时,此问题被标记为C#