Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Label поверх PictureBox Добавлено: 24.08.11 07:03  

Автор вопроса:  ShaVas
Программно (под VB.NET) создаю четыре PictureBox и четыре Label, но не могу сделать, чтобы надпись была поверх картинки.
 Код:
For i = 1 To 4
            Картинки(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-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 24.08.11 14:07
Раскладку клавиатуры переключать не устаёте?:-)
помнится в vb6 label не был самостоятельным окном, а просто надписью поверх другого окна, поэтому лейбл надо поместить внутрь пикчербокс, чтобы отобразить поверх картинки

Ответить

Номер ответа: 2
Автор ответа:
 ShaVas



Вопросов: 2
Ответов: 3
 Профиль | | #2 Добавлено: 24.08.11 14:25
Раскладку клавиатуры переключать не устаёте?:-)

Нет, пользуюсь PuntoSwitcher

Тут неправильно напечатал:
.Parent = КнопкиОтветов(i)

Должно быть так:
.Parent = Картинки(i)

(на форуме свои сообщения исправлять нельзя:[ )

То есть я и так поместил текст в контейнер-картинку. Пробовал ещё через .container, но выдается сообщение, что это свойство помечено как ReadOnly

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #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
Всё, эти вопросом я разобрался. Проблема в том, что я
BringToFront()
использовал до того, как добавлял элементы на форму:
Me.Controls.AddRange(Me.Картинки)
         Me.Controls.AddRange(Me.Надписи)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам