Vb.net 更改函数内部的标签属性

Vb.net 更改函数内部的标签属性,vb.net,Vb.net,我只是想知道这是否可能。我试图验证用户要填写的表单,当所需部分没有填写时,我会增加一个 ErrorCount+=1 变量来显示程序内部发生的错误,然后我还设置了 ErrorArray() 无论对应的字段号是什么,现在我有0-12(13个字段)。我还做了一件事,将与所有这些字段关联的标签命名为与可能设置的ErrorArray()值相对应的标签,例如 PatLabel0 PatLabel1等 我试图做的是循环数组内容,这取决于设置了哪些ErrorArray()值,然后将该标签的相应fontcolor

我只是想知道这是否可能。我试图验证用户要填写的表单,当所需部分没有填写时,我会增加一个

ErrorCount+=1

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

ErrorArray()

无论对应的字段号是什么,现在我有0-12(13个字段)。我还做了一件事,将与所有这些字段关联的标签命名为与可能设置的ErrorArray()值相对应的标签,例如

PatLabel0 PatLabel1等

我试图做的是循环数组内容,这取决于设置了哪些ErrorArray()值,然后将该标签的相应fontcolor属性设置为红色,以显示现在需要填写这些内容。这就是我所拥有的,但是VisualStudio不允许我使用循环中的迭代作为更改属性的参考。有谁能给我指出一个正确的方向来试图解决这个问题,或者至少告诉我我还能做些什么。只是好像做了20个如果…那么…否则。。。。当一个函数行可以执行相同的任务时,每个语句中有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不知道你的代码是什么意思,但这里有一些C#来实现这个技巧

for(int i = 0; i < ErrorArray.Length; i++)
{
   if(ErrorArray[i] == "*")
   {
      PatLabel(i).ForeColor = Color.Red;
   }
   else
   {
      PatLabel(i).ForeColor = Color.Black;
   }
}
一个可以设置给定数字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);
   }
}
for(int i=0;i

注意:当我编写最初的代码示例时,这个问题被标记为C#

对不起,我对使用VB非常陌生,我总是用PHP编程,这是肯定的。PatLabel就是我在表单中命名的所有标签,它与ErrorArray[]数组中设置的任何点对应,以防出现错误。基本上类似于PatLabel0 PatLabel1 PatLabel2等。。是表单上标签的名称,如果用户提交表单时没有填写这些标签对应的文本框,那么我想将字体属性更改为红色,就是这样。如果我要创建一个名为PatLabel()的函数,我可以只传入I的值,并根据I的值,将ForeColor属性设置为相应的标签?@NickG,我已更新我的答案以包含一个示例函数。不幸的是(对你来说)我不做VB.Net,所以我的代码是C#-如果你想使用它,你必须尝试转换它(如果你做谷歌搜索,周围有在线转换器)谢谢你的示例,我将进行转换,并让你知道我如何使用它,很抱歉最初错误地标记了问题,感谢您正确地标记它并帮助我解决这个问题。我知道我是用VB.Net编写的,但老实说,我不确定这是否是VB.Net的正确语法,我在过去18个月里用99%的PHP编写代码,甚至不确定从何处开始跨越,如果你对我有任何指导意见,我很乐意接受。但是如果你不使用C,为什么要把这个问题标记为C?对不起,上面说我在我的页面上把它标记为vb.net,这显然是个错误。不,你把它标记为C。Robaw编辑标记以将其更改为VB。。。
for(int i = 0; i < ErrorArray.Length; i++)
{
   if(ErrorArray[i] == "*")
   {
      SetControlColor(i, Color.Red);
   }
   else
   {
      SetControlColor(i, Color.Black);
   }
}