Страница: 1 |
Страница: 1 |
Вопрос: Label поверх PictureBox
Добавлено: 24.08.11 07:03
Автор вопроса: ShaVas
Программно (под VB.NET) создаю четыре PictureBox и четыре Label, но не могу сделать, чтобы надпись была поверх картинки.
Код:
Картинки(i) = NewSystem.Windows.Forms.PictureBox
With Картинки(i)
.Visible = True
If i Mod 2 = 0 Then
.Size = New Size(393, 50)
Else
.Size = New Size(361, 50)
End If
.BackColor = Color.Transparent
End With
Надписи(i) = New System.Windows.Forms.Label
With Надписи(i)
.Visible = True
If i Mod 2 = 0 Then
.Size = New Size(393, 20)
Else
.Size = New Size(361, 20)
End If
.BackColor = Color.Transparent
.ForeColor = Color.White
.Font = New Font(Шрифт, 12)
.Parent = КнопкиОтветов(i)
.BringToFront()
End With
AddHandler Картинки(i).Click, AddressOf Ответ_Click
Next i
Картинки(1).Location = New Point(0, 239)
Картинки(2).Location = New Point(361, 239)
Картинки(3).Location = New Point(0, 294)
Картинки(4).Location = New Point(361, 294)
Картинки(1).Image = Image.FromFile(Application.StartupPath & "\Картинки\A.png")
Картинки(2).Image = Image.FromFile(Application.StartupPath & "\Картинки\B.png")
Картинки(3).Image = Image.FromFile(Application.StartupPath & "\Картинки\C.png")
Картинки(4).Image = Image.FromFile(Application.StartupPath & "\Картинки\D.png")
Надписи(1).Location = New Point(1, 1)
Надписи(2).Location = New Point(381, 239)
Надписи(3).Location = New Point(20, 294)
Надписи(4).Location = New Point(381, 294)
Me.Controls.AddRange(Me.Картинки)
Me.Controls.AddRange(Me.Надписи)
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 24.08.11 14:07
Раскладку клавиатуры переключать не устаёте?
помнится в vb6 label не был самостоятельным окном, а просто надписью поверх другого окна, поэтому лейбл надо поместить внутрь пикчербокс, чтобы отобразить поверх картинки
Номер ответа: 2
Автор ответа:
ShaVas
Вопросов: 2
Ответов: 3
Профиль | | #2
Добавлено: 24.08.11 14:25
Нет, пользуюсь PuntoSwitcher
Тут неправильно напечатал:
Должно быть так:
(на форуме свои сообщения исправлять нельзя:[ )
То есть я и так поместил текст в контейнер-картинку. Пробовал ещё через .container, но выдается сообщение, что это свойство помечено как ReadOnly
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 24.08.11 14:54
Учитывая, что высота пикчербокса == 50, то надписи 2,3,4 располагаются вне видимых пределов. А вот надпись1 должна быть видна
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 24.08.11 20:29
В Windows Forms в .NET Label это нормальное окно. Чтоб он был поверх других контролов, жмешь по нему правой кнопкой и выбираешь Bring to front (я так полагаю дело в этом).
Если в рантайме, надо смореть, скорее всего есть метод BringToFront, если нет, то задавать свойство ZIndex или ZOrder
Номер ответа: 5
Автор ответа:
ShaVas
Вопросов: 2
Ответов: 3
Профиль | | #5
Добавлено: 25.08.11 13:55
Всё, эти вопросом я разобрался. Проблема в том, что я
Me.Controls.AddRange(Me.Надписи)