예제 #1
0
        private void btnChamar_Click(object sender, EventArgs e)
        {
            /* O form que exibe a caixa de diálogo que pede o texto é chamado, e então é realizada a assinatura para o
             * evento que repassa a mensagem digitada na caixa de diálogo. Reparar que neste caso um método anônimo com uma
             * expressão lambda também foi utilizado.*/

            FrmDialogo dialogo = new FrmDialogo();

            dialogo.ButtonOkClickEvent += (eventSender, eventE) =>
            {
                ButtonOkClickEventArgs args = (ButtonOkClickEventArgs)eventE;
                lblMensagem.Text = args.Mensagem;
            };
        }
예제 #2
0
        public FrmDialogo()
        {
            // Cria-se uma lista de controles, para posteriormente adicionar ao form.
            List <Control> controles = new List <Control>();

            // Ao instanciar a classe é que os campos relativos aos controles são inicializados.
            lblTitulo   = new Label();
            txbMensagem = new TextBox();
            btnOK       = new Button();

            // O método SuspendLayout() suspende a lógica refente à UI. É conveniente para a execução das linhas onde os controles
            // são parametrizados.
            SuspendLayout();

            // Parâmetros são passados a cada um dos controles. Os valores específicos de tamanho e posição foram copiados da resposta
            lblTitulo.AutoSize = true;
            lblTitulo.Location = new Point(13, 13);
            lblTitulo.Name     = "lblTitulo";
            lblTitulo.Size     = new Size(35, 13);
            lblTitulo.TabIndex = 0;
            controles.Add(lblTitulo); // Após parametrizar, o controle é adicionado à lista.

            txbMensagem.Location = new Point(13, 30);
            txbMensagem.Name     = "txbMensagem";
            txbMensagem.Size     = new Size(436, 20);
            txbMensagem.TabIndex = 1;
            controles.Add(txbMensagem);

            btnOK.Location = new Point(373, 67);
            btnOK.Name     = "btnOk";
            btnOK.Size     = new Size(75, 23);
            btnOK.Text     = "OK";
            btnOK.UseVisualStyleBackColor = true;
            controles.Add(btnOK);

            /* Aqui, executa-se um procedimento de assinatura para evento. O construtor da classe deste Form assina o
             * evento Click do botão OK, para que alguma ação seja tomada. Observar que a lógica deve ser executada no
             * evento Click do botão é declarada como um método anônimo. Isto é equivalente a declarar nesta classe um
             * método com as instruções que estão dentro da expressão lambda e fazer a assinatura da linha de assinatura
             * do evento Click do botão OK inscrever tal método.*/

            // 1. Assinatura para o evento Click do botão OK
            btnOK.Click += (object sender, EventArgs e) =>
            {
                // 2. Os parâmetros necessários são passados ao evento definido no começo da classe.
                e = new ButtonOkClickEventArgs()
                {
                    Mensagem = txbMensagem.Text
                };

                // 3. O método que executa o delegate do evento ButtonOkClickEvent é disparado.
                OnButtonOkClick(e);
            };

            AutoScaleDimensions = new SizeF(6F, 13F);
            AutoScaleMode       = AutoScaleMode.Font;
            ClientSize          = new Size(461, 106);
            Controls.AddRange(controles.ToArray());
            ResumeLayout(false);
            PerformLayout();
            Text          = "Diálogo";
            StartPosition = FormStartPosition.CenterScreen;
            Show();
        }