Braganca@fe.up.pt

RuntimeAddUserControls

Este exemplo cobre as seguintes àreas :

  • UserControl
  • Event / RaiseEvent / WithEvents
  • AddHandler / AddressOf
  • Controls.Add
  • Mouse

Código completo

User Control


Form de teste

Public Class UserControlTeste1

    'Criar event que retorna o objecto corrente

    Public Event click_MyControl(ByVal obj As UserControlTeste1)

 

 

    Private Sub UserControlTeste_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click

        'Activar o evento

        RaiseEvent click_MyControl(Me)

    End Sub

 


  Form de teste

 

Public Class Form1

    'Objectos que poderão ser adicionados

    Private WithEvents MyUserControl1 As RuntimeAddUserControls.UserControlTeste1

    Private WithEvents MyUserControl2 As RuntimeAddUserControls.UserControlTeste2

 

    'Variável temporária com Objecto que está a ser tratado

    Private WithEvents currentUserControl As Object

 

    Private Mover As Boolean = False

 

 

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Static i As Integer

        i = i + 1

 

        'Criar um controlo dinamicamente

        MyUserControl1 = New RuntimeAddUserControls.UserControlTeste1           'Obrigatório

        MyUserControl1.Location = New System.Drawing.Point(45, 25)              'Obrigatório

        AddHandler MyUserControl1.click_MyControl, AddressOf Get_Control_Click  'Obrigatório

        Me.Controls.Add(MyUserControl1)             'Obrigatório

 

        MyUserControl1.Name = "UserControlTeste1 nº" & i.ToString           'Facultativo

        MyUserControl1.Size = New System.Drawing.Size(150, 150)             'Facultativo

        MyUserControl1.TabIndex = 0                                         'Facultativo

 

 

        MyUserControl1.Visible = True               'Obrigatório/Facultativo

 

 

 

    End Sub

 

    'sub para controlar o evento

    Private Sub Get_Control_Click(ByVal sender As Object)

        Mover = Not Mover

        currentUserControl = sender

        Label1.Text = "Obj Corrente =" & currentUserControl.name

 

 

    End Sub

 

    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

        If Mover Then

            Me.currentUserControl.Location = New System.Drawing.Point(e.X, e.Y)

        End If

    End Sub

 

    Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick

        Mover = False

    End Sub