2016-09-22 3 views
0

Я хочу создать небольшое окно, которое становится видимым, когда я нажимаю кнопку и прикрепляется к основной форме (например, shwon ниже). Я хочу использовать это окно, чтобы показать предварительный просмотр изображений (у меня будет Listbox и в зависимости от того, какая запись выбрана, отображается изображение) Как я могу это сделать? И как я могу быть уверен, что окно всегда будет прикреплено к основной форме (не в зависимости от разрешения). Я попытался сделать это со второй формой, но я не могу исправить ее в правильном положении.VB.NET Создайте форму, прикрепленную к окну предварительного просмотра

Example рассматривает

ответ

1

Если предположить, что предварительный просмотр класса формы является frmPreview и вы откроете это так:

Private mPreviewForm As frmPreview Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click mPreviewForm = New frmPreview mPreviewForm.Show() AttachPreviewForm() End Sub

Тогда вы должны изменить его каждый раз, когда основная форма меняется размером или местоположение:

Private Sub AttachPreviewForm() 
    If mPreviewForm IsNot Nothing Then 
     mPreviewForm.AttachForm(Me) 
    End If 
End Sub 
Private Sub Form1_SizeChanged(sender As Object, e As EventArgs) Handles Me.SizeChanged 
    AttachPreviewForm() 
End Sub 
Private Sub Form1_LocationChanged(sender As Object, e As EventArgs) Handles Me.LocationChanged 
    AttachPreviewForm() 
End Sub 

И в frmPreview:

Public Sub AttachForm(parent As Form) 
    Location = New Point(parent.Left + parent.Width, parent.Top) 
    Size = New Size(200, parent.Height) 
End Sub 
+0

Это работает укомплектовать хорошо, я только что сделал небольшое изменение от «mPreviewForm = Новый frmPreview» к «mPreviewForm = frmPreview», чтобы избежать того, чтобы несколько окон предварительного просмотра может генерировать друг над другом (так что только один может быть активным вовремя). Кстати, я предполагаю, что разрыв между двумя формами предопределен. есть ли способ связать его, так что на самом деле между ними есть 0 пикселей? – Alex

+0

Просто измените строку 'Location = New Point (parent.Left + parent.Width - delta, parent.Top)' и измените 'delta' на то, что вы хотите ... – Olaf

+0

о, извините, я havent видел это, спасибо за указание вне – Alex

Смежные вопросы