color1, color2, color3, color4 являются целыми числами.
когда вы пишете:
Тусклый цвет1 = генератор. Следующая (1, 4)
generator.Next создает целое число, поэтому color1 определяется как целое число.
Когда ты пишешь
color1 = Color.Red
это сбивает с толку, потому что вы пытаетесь установить Color для переменной, которая является целым числом.
Есть более понятные способы написания кода в целом, но вы, вероятно, могли бы сделать что-то вроде этого:
option explicit
Dim color_index as Integer
Dim color1 as System.Drawing.Color
color_index=generator.Next(1,4)
[choosing logic]
color1 = Color.red
[blah blah blah]
Button.backcolor = color1
Дополнительные примечания:
как говорится в первом ответе, действительно есть лучший способ написать все это. Следующий псевдокод - это то, как я подхожу к проблеме:
(извините, я не помню точный синтаксис VB на моей голове)
Button_Array = [Button1,Button2,Button3,Button4]
Color_array= [Color.red,Color.blue,Color.green,Color.yellow]
for i in 1 to 4
color_index=generator.Next(1,4)
Button_Array[i].backcolor = Color_array[color_index]
endfor
Это намного удобочитаемее и удобнее в обслуживании.
(подумайте, сколько строк нужно добавить, если вы хотите добавить 5-ю кнопку или 5-й цвет в исходном списке или в моем списке псевдокода)