vladd56
@vladd56
Пенсионер

Как отобразить картинку на button в цикле?

vb.net Пытаюсь в цикле поставить картинки на кнопки.
Me.Controls("Button" & (i + 16)).BackgroundImage = LoadImageFromFile("Фигуры\" & i & ".jpg")

Выскакивает ошибка
System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."

Как написать правильно код чтобы не было такой ошибки. Прошу помощи.
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 2
BasiC2k
@BasiC2k
.NET developer (open to job offers)
1. Лучше в коде загружать картинку один раз, а не 16ть.

Dim oBitmap As Bitmap = New Bitmap("Фигуры\" & i & ".jpg")

2. Перед присвоением кнопке картинки, неплохо было бы проверить - есть ли такая кнопка. Поэтому:

Dim oButton as Button

For i As Integer = 0 To 16
oButton = Me.Controls("Button" & (i))
If IsNothing(oButton) Then Continue For ' Такой кнопки нет
oButton.BackgroundImage = oBitmap
next
Ответ написан
Комментировать
vladd56
@vladd56 Автор вопроса
Пенсионер
Здравствуйте.
Спасибо за помощь. Дело в том что у меня 12 кнопок на вкладке TabControl. И 12 картинок в папке Фигуры. И первая кнопка на этой вкладке это Button17. Поэтому в цикле я и попробовал такую запись Me.Controls("Button" & (i + 16)). Написал такой код
Dim i As Integer
        Dim oButton As Button
        For i = 1 To 12
            Dim oBitmap As Bitmap = New Bitmap("Фигуры\" & i & ".jpg")
            oButton = Me.Controls("Button" & (i + 16))
            If IsNothing(oButton) Then Continue For ' Такой кнопки нет
            oButton.BackgroundImage = oBitmap
        Next i

Но картинки на кнопках не получил. Видимо надо учесть что кнопки находятся на вкладке TabControl. Как это правильно сделать? Прошу помощи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы