изменение свойств метки внутри функции

#vb.net

#vb.net

Вопрос:

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

Количество ошибок = 1

переменная, чтобы показать, что ошибки произошли внутри программы, затем я также устанавливаю

ErrorArray()

независимо от соответствующего номера поля, теперь у меня есть 0-12 (13 полей). То, что я также сделал, озаглавило метки, которые связаны со всеми этими полями, чтобы соответствовать значению ErrorArray(), которое может быть установлено, например.

PatLabel0 PatLabel1 и т.д.

Что я пытаюсь сделать, так это перебирать содержимое массива, в зависимости от того, какие значения ErrorArray() были установлены, чтобы перейти и установить для соответствующего свойства fontcolor этой метки значение red, чтобы показать, что теперь их нужно заполнить. Это то, что у меня есть, но Visual Studio не позволяет мне использовать итерацию через цикл в качестве ссылки на изменение свойств. Может кто-нибудь указать мне правильное направление, чтобы попытаться разобраться в этом, или, по крайней мере, сказать мне, что еще я мог бы сделать. Кажется, что выполнение 20 инструкций if ….then ….else …. с 2-3 строками в каждой из них является избыточным, когда 1 функциональная строка может выполнять ту же работу. Это то, что у меня есть.

 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. Я знаю, что пишу в VB.Net , но, честно говоря, я не уверен, что это вообще правильный синтаксис для VB.Net , я кодировал на 99% PHP в течение последних 18 месяцев и даже не уверен, с чего начать переход, если у вас есть какие-либо обучающие советы для меня, я быбудьте рады принять это

2. Но зачем обозначать вопрос как C #, если вы не используете C #?

3. извините, в нем говорится, что я пометил его как vb.net на моей странице здесь, очевидно, это была ошибка

4. Нет, вы пометили его как C #. robyaw отредактировал теги, чтобы изменить их на VB…

Ответ №1:

Понятия не имею, что означает ваш код, но вот немного 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;
  

Пример функции, которая может задавать свойство элемента управления с заданным идентификатором номера…

 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 #, когда я писал начальные примеры кода

Комментарии:

1. Извините, я действительно новичок в использовании VB, я всегда программирую на PHP, и это не совсем то же самое, это точно. PatLabel — это просто то, что я назвал всеми метками в форме, чтобы соответствовать любой точке в массиве ErrorArray[], установленной в случае ошибки. В основном что-то вроде PatLabel0 PatLabel1 PatLabel2 и т. Д. — Это имена меток в форме, если пользователь отправляет форму, не заполняя соответствующее текстовое поле для этих меток, чем я хочу изменить свойство шрифта на красный, вот и все.

2. Если бы я должен был создать функцию с именем PatLabel(), мог бы я просто передать значение i и в зависимости от значения i присвоить свойству ForeColor соответствующую метку?

3. @NickG, я обновил свой ответ, включив в него пример функции. К сожалению (для вас) Я не делаю VB. Net итак, мой код написан на C # — вам придется попытаться преобразовать его, если вы хотите использовать что-либо из этого (есть онлайн-конвертеры, если вы выполняете поиск в Google)

4. спасибо за ваш образец, я буду работать над преобразованием и сообщу вам, как я с этим справляюсь, извините за неправильную пометку вопроса изначально, и спасибо вам за то, что вы правильно пометили его и помогли мне с этой проблемой.