Como criar singlecast básico e representantes de difusão seletiva no translation from VPE for Csharp Visual

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 320732
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
Este artigo passo a passo fornece uma introdução aos delegados, usando exemplos simples. Dois exemplos de um delegado singlecast (ou seja, um delegado que não é combinado) são fornecidos. Um exemplo apresenta um delegado em um objeto que é chamado de um formulário do Windows. O outro fornece um delegado em um formulário que pode ser chamado de uma classe. O representante de difusão seletiva (ou combinado) constrói uma instância adicional do representante de formulário e demonstra como criar um exemplo de delegado multicast é composto de dois retornos de chamada do formulário.

Se você for novo para representantes, os exemplos neste artigo são o que anteriormente eram conhecido como "retornos de chamada". Delegados são ponteiros de função segurança do tipo que se integram a capacidade de chamar vários métodos em série e oferecer suporte a chamada de métodos estáticos e métodos de instância (ponteiros de função nativa podem direcionar apenas métodos estáticos). As funções de delegado neste exemplo são muito básicas. Sua função é alterar a cor de plano de fundo de uma caixa de imagem.

O exemplo neste artigo consiste em um formulário com duas caixas de imagens e três botões de comando. Button1 demonstra um delegado de classe que pode ser chamado a partir do formulário. Button2 demonstra o cenário oposto: o delegado reside no formulário e é chamado da classe. Além disso, ele demonstra que um representante pode ser passado para outra entidade. Button3 cria um delegado multicast que é composto de dois métodos de formulário. Chama o delegado, quando executada, ambos os métodos de formulário.

back to the top

Representante de uma classe

Este exemplo cria um delegado em uma classe. O delegado é instanciado no formulário para que o método de classe que está especificado no delegado pode ser chamado do formulário. Este exemplo não é particularmente prático porque a mesma funcionalidade pode ser realizada usando um método classe padrão. Ele é oferecido aqui como uma demonstração de como estabelecer esse tipo de delegado se você precisar fazer isso.
//Define the delegate in the class.delegate Color ClassCallback();//Create an instance of the delegate on the form.//Specifying the use of the changeColor method.ClassCallback c=new ClassCallback(cbox.changeColor);//Call the delegate function (changeColor).this.textBox1.BackColor=c();				
back to the top

Representante de um formulário

Este exemplo cria um delegado em um formulário que pode ser passado para a classe (em oposição a primeiro exemplo, onde o delegado não foi passado.) A classe pode então chamar o método especificado através do delegado.
//Declare the delegate.public delegate void FormCallback();//Create an instance of the delegate. FormCallback fc=new FormCallback(toggleColor);//Pass the delegate to the class.cbox.setCallback(fc);//Accept the delegate in the class and invoke the method.public void setCallback(FormCallback fc){    fc();}				
back to the top

Representante de difusão seletiva de um formulário

Este exemplo cria uma instância do delegate adicional no formulário. O objetivo do representante adicional é demonstrar a construção de um delegado multicast. Um delegado multicast é capaz de chamar o mais método. Nesse caso, o delegado é composto de dois métodos.
//Create an instance of the delegate.FormCallback fc1=new FormCallback(toggleColor);//create a second instance of the delegateFormCallback fc2=new FormCallback(toggleOtherColor);//Create a multicast delegate.//Delegates can also be combined using the += operator.FormCallback fc = fc1 + fc2;//Pass the delegate to the class. //Note that this does not require any changes to the class method.cbox.setCallback(fc as FormCallback);				
back to the top

Exemplo passo a passo

  1. No Microsoft Visual translation from VPE for Csharp, abra um novo projeto Windows Application. Por padrão, é criado o Form1.
  2. Abra a janela de código para Form1.
  3. Substitua o código no Form1 com o seguinte:
    using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;namespace delegateExample{ 	public delegate void FormCallback();		public class displayForm : System.Windows.Forms.Form	{		private System.Windows.Forms.TextBox textBox1;		private System.Windows.Forms.Button button1;		private System.ComponentModel.Container components = null;		private System.Windows.Forms.TextBox textBox2;		private System.Windows.Forms.Button button3;		private System.Windows.Forms.Button button4;					public displayForm()		{			InitializeComponent();		}		protected override void Dispose( bool disposing )		{			if( disposing )			{				if (components != null) 				{					components.Dispose();				}			}			base.Dispose( disposing );		}		#region Windows Form Designer generated code				private void InitializeComponent()		{			this.textBox1 = new System.Windows.Forms.TextBox();			this.button1 = new System.Windows.Forms.Button();			this.textBox2 = new System.Windows.Forms.TextBox();			this.button3 = new System.Windows.Forms.Button();			this.button4 = new System.Windows.Forms.Button();			this.SuspendLayout();			// 			// textBox1			// 			this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));			this.textBox1.Location = new System.Drawing.Point(16, 16);			this.textBox1.Multiline = true;			this.textBox1.Name = "textBox1";			this.textBox1.Size = new System.Drawing.Size(64, 96);			this.textBox1.TabIndex = 0;			this.textBox1.Text = "";			this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;			// 			// button1			// 			this.button1.Location = new System.Drawing.Point(16, 136);			this.button1.Name = "button1";			this.button1.Size = new System.Drawing.Size(64, 56);			this.button1.TabIndex = 1;			this.button1.Text = "Delegate in Object";			this.button1.Click += new System.EventHandler(this.button1_Click);			// 			// textBox2			// 			this.textBox2.Location = new System.Drawing.Point(104, 16);			this.textBox2.Multiline = true;			this.textBox2.Name = "textBox2";			this.textBox2.Size = new System.Drawing.Size(64, 96);			this.textBox2.TabIndex = 3;			this.textBox2.Text = "";			// 			// button3			// 			this.button3.Location = new System.Drawing.Point(104, 136);			this.button3.Name = "button3";			this.button3.Size = new System.Drawing.Size(64, 56);			this.button3.TabIndex = 4;			this.button3.Text = "Delegate in Form";			this.button3.Click += new System.EventHandler(this.button3_Click);			// 			// button4			// 			this.button4.Location = new System.Drawing.Point(192, 64);			this.button4.Name = "button4";			this.button4.Size = new System.Drawing.Size(75, 128);			this.button4.TabIndex = 5;			this.button4.Text = "Multicast Delegate";			this.button4.Click += new System.EventHandler(this.button4_Click);			// 			// displayForm			// 			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);			this.ClientSize = new System.Drawing.Size(292, 266);			this.Controls.AddRange(new System.Windows.Forms.Control[] {																		  this.button4,																		  this.button3,																		  this.textBox2,																		  this.button1,																		  this.textBox1});			this.Name = "displayForm";			this.Text = "Delegates Example";			this.Load += new System.EventHandler(this.Form1_Load);			this.ResumeLayout(false);		}		#endregion		colorBox cbox;		bool toggle=false;		bool othertoggle=false;				[STAThread]		static void Main() 		{			Application.Run(new displayForm());		}		private void Form1_Load(object sender, System.EventArgs e)		{			cbox=new colorBox();						}				private void button1_Click(object sender, System.EventArgs e)		{							ClassCallback c=new ClassCallback(cbox.changeColor);			this.textBox1.BackColor=c();		}			public void toggleColor()		{			toggle=!toggle;			if (toggle)			{								this.textBox2.BackColor= Color.Red;			}			else			{				this.textBox2.BackColor=Color.Goldenrod;							}					}		public void toggleOtherColor()		{			othertoggle=!othertoggle;			if (toggle)			{								this.textBox1.BackColor= Color.Red;			}			else			{				this.textBox1.BackColor=Color.Goldenrod;							}		}  			private void button3_Click(object sender, System.EventArgs e)		{			FormCallback fc=new FormCallback(toggleColor);			cbox.setCallback(fc);		}		private void button4_Click(object sender, System.EventArgs e)		{			FormCallback fc1=new FormCallback(toggleColor);			FormCallback fc2=new FormCallback(toggleOtherColor);			FormCallback fc = fc1 + fc2;			cbox.setCallback(fc as FormCallback);				}	}}					
  4. Adicione uma classe para o projeto.
  5. Substitua o código na classe com o seguinte:
    using System;using System.Drawing;namespace delegateExample{	// Delegate to provide a callback in the class.// This callback is used by the form.	delegate Color ClassCallback();// Class to demonstrate delegate use. Delegates are // provided so that the Form can call back to the class and the// class can call back to the Form.	public class colorBox	{		/// <summary>		/// Boolean flag used to toggle colors.		/// </summary>		private bool toggle=true;		/// <summary>		/// Class Constructor 		/// </summary>		public colorBox()		{					}			// Method that is provided to the form		// for use in the callback.				public Color changeColor()		{			toggle=!toggle;			if (toggle)			{								return Color.Red;			}			else			{				return Color.Goldenrod;							}		}				// Function that receives and executes the 		// delegate (callback) from the form.				public void setCallback(FormCallback fc)	{			fc();	}	}}					
    Observação O código deve ser alterado no Visual Studio 2005. Quando você cria um projeto Windows Forms, translation from VPE for Csharp Visual adiciona um formulário para o projeto por padrão. Este formulário é denominado Form1. Os dois arquivos que representam o formulário são denominados Form1.cs e Form1.Designer.cs. Tem de escrever seu código no Form1.cs. O ficheiro designer.cs é onde o Windows Forms Designer escreve o código que implementa todas as ações que você executou arrastando e soltando controles da caixa de ferramentas. Para obter mais informações sobre o Windows Forms Designer no Visual translation from VPE for Csharp 2005, visite o seguinte site:
  6. Execute o projeto.
  7. Quando você clica nos botões, os métodos de delegado são chamados para alterar as cores das caixas de imagem.
back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 320732 - Última Revisão: 12/07/2015 10:27:34 - Revisão: 2.4

Microsoft Visual C# 2005 Express Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowtomaster KB320732 KbMtpt
Comentários