Como adicionar dinamicamente um controle sem codificar o controle digite no translation from VPE for Csharp Visual .NET ou Visual translation from VPE for Csharp 2005

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: 815780
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 311321.
Este artigo se refere ao seguinte namespace Microsoft .NET Framework Class Library:
  • System.Reflection
Sumário
Este artigo passo a passo descreve como adicionar dinamicamente um controle a um formulário no Visual translation from VPE for Csharp .NET ou Visual translation from VPE for Csharp 2005 e como responder aos eventos do controle.

back to the top

Exemplo passo a passo

Esta seção descreve como criar um projeto que demonstra como adicionar dinamicamente um controle a um formulário no Visual translation from VPE for Csharp .NET ou no Visual translation from VPE for Csharp 2005 e como responder a eventos do controle.
  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Clique em projetos do Visual translation from VPE for Csharp em Tipos de projeto e, em seguida, clique em Windows Application em modelos . Por padrão, o Form1 é adicionado para o projeto.

    Observação No Visual Studio 2005, clique em translation from VPE for Csharp Visual em Tipos de projeto .
  4. Adicione o seguinte código à parte superior da janela código do Form1:
    using System.Reflection;
  5. Arraste dois controles Button e um controle ComboBox da caixa de ferramentas e, em seguida, solte os controles na parte inferior do Form1. Você irá adicionar controles dinamicamente a parte superior do formulário.
  6. Na janela Properties, altere o nome e as propriedades Text desses controles da seguinte maneira:

    ControleNomePropriedade de texto
    Button1btnAddControlAdicionar controle
    button2btnRemoveControlRemover controle
    comboBox1cboControlTypeSelecionar controle de tipo
  7. Cole o seguinte código para as instruções de definição para Form1 primeiro:
    TreeView DynTreeview;TextBox DynTextBox;ListBox DynListBox;Control ControlObject;
  8. Alterne para modo de design e, em seguida, clique duas vezes Form1 para posicionar o ponto de inserção na primeira linha do evento Form1_Load .
  9. Cole o seguinte código no Form1_Load evento:
    this.btnAddControl.Click += new System.EventHandler(this.btnAddControl_Click);this.btnRemoveControl.Click += new System.EventHandler(this.btnRemoveControl_Click);cboControlType.Items.AddRange(new object[3]{"TreeView","ListBox","TextBox"});
  10. Paste the following code after the "Windows Form Designer generated code" region of Form1:
    private void AddControl(string ControlName, string ControlType){   System.Reflection.Assembly asm;   asm = typeof(Form).Assembly;   ControlObject = (System.Windows.Forms.Control)asm.CreateInstance(ControlType);   ControlObject.Name = ControlName;   ControlObject.Location = new System.Drawing.Point(20, 20);   this.Controls.Add(ControlObject);   if (ControlType.EndsWith("TreeView"))   {      DynTreeview = (System.Windows.Forms.TreeView)ControlObject;      DynTreeview.Width = 200;      DynTreeview.Height = 120;      DynTreeview.Nodes.Add(new TreeNode("Root"));      DynTreeview.Nodes.Add("FirstChild");      DynTreeview.Nodes.Add("SecondChild");      DynTreeview.ExpandAll();      DynTreeview.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(DynTree_AfterSelect);   }   else if (ControlType.EndsWith("ListBox"))   {      DynListBox = (System.Windows.Forms.ListBox)ControlObject;      DynListBox.Width = 200;      DynListBox.Height = 120;      DynListBox.Items.AddRange(new object[3]{"Apples", "Banana", "Oranges"});      DynListBox.SelectedIndexChanged += new System.EventHandler(DynCtrl_Event);   }   else if (ControlType.EndsWith("TextBox"))   {      DynTextBox = (System.Windows.Forms.TextBox)ControlObject;      DynTextBox.Width = 200;      DynTextBox.Text = "Dynamically Added Textbox.";      DynTextBox.DoubleClick += new System.EventHandler(DynCtrl_Event);   }}private void btnAddControl_Click(object sender, System.EventArgs e){   string CtrlType;   if (!(ControlObject == null))   {      btnRemoveControl.PerformClick();   }   if (cboControlType.SelectedIndex < 0)   {      MessageBox.Show("Select a Control Type to add.");      return;   }   CtrlType = "System.Windows.Forms." + cboControlType.SelectedItem.ToString();   this.AddControl("myControl", CtrlType);}private void DynCtrl_Event(object sender, System.EventArgs e){   if (sender.GetType().ToString().EndsWith("ListBox"))   {      MessageBox.Show("The item you selected is: " + DynListBox.SelectedItem.ToString());   }   else if (sender.GetType().ToString().EndsWith("TextBox"))   {      Clipboard.SetDataObject(DynTextBox.Text);      MessageBox.Show("The Text is copied to the clipboard.");   }}private void btnRemoveControl_Click(object sender, System.EventArgs e){   this.Controls.Remove(ControlObject);   ControlObject = null;}private void DynTree_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e){   MessageBox.Show("The Node you clicked on is: " + e.Node.Text);}
  11. Salve seu projeto.
  12. Para executar seu projeto, clique em Iniciar no menu Debug .
  13. Na caixa de combinação, clique em TreeView para o tipo de controle e clique em Adicionar controle . Observe que um novo controle TreeView é adicionado. Clique em qualquer nó para testar o evento AfterClick do controle TreeView .
back to the top

Discussão de código

  • Neste exemplo, o controle ComboBox contém a lista de tipos de controle a ser adicionado dinamicamente. Você preencher essa lista no evento Load do formulário.
  • Você declarou três objetos de controle específico nas instruções de definição para Form1 iniciais para que você possa usar a funcionalidade individual desses objetos de controle em seu programa. Declarando tipos de controle específico, você também pode acessar Microsoft IntelliSense enquanto você está programando.
  • No manipulador de eventos btnAddControl_Click , você verificar para determinar se há outro controle que já está carregado. Em caso afirmativo, você remove o controle existente e adicione o novo controle que foi selecionado na caixa de combinação. Você também certificar-se que a caixa de combinação possui uma seleção válida. Se a seleção não for válida, o programa gera uma caixa de mensagem e sai o manipulador de eventos sem processamento mais instruções. Se a seleção é válida, você chama o método AddControl com parâmetros apropriados.
  • No método AddControl , você declarou asm como um tipo System.Reflection.assembly . A instrução typeof(Form) retorna o objeto de tipo do tipo formulário . Você, em seguida, use o método assembly deste objeto para recuperar uma instância do assembly em que a classe de formulário está definida. Depois de assembly, o objeto asm é criado. Você usa o método CreateInstance do objeto asm com um ControlType seqüência parâmetro para criar uma instância do controle. Depois que o controle é criado, você adicioná-lo para o formulário atual usando o método this.Controls.Add . Em seguida, usando o método EndsWith da classe String , verifique o tipo de controle que é passado para esse procedimento como o segundo argumento. Dependendo do tipo de controle, você definir as individuais propriedades do controle na if... else... se... bloco. Você usa o operador += para conectar o evento específico de controle dinamicamente adicionado com o manipulador de eventos. Para controles ListBox e TextBox , conectados SelectedIndexChanged e os eventos DoubleClick com o manipulador de eventos DynCtrl_Event . Para o controle TreeView , você usou um manipulador de eventos separado ( DynTree_AfterSelect ) para conectar o controle com o evento AfterSelect do controle TreeView.
  • O manipulador de eventos para o controle TreeView requer uma assinatura diferente dos outros dois controles. O segundo argumento o manipulador de eventos DynTree_AfterSelect é do tipo System.Windows.Forms.TreeViewEventArgs ; DynCtrl_Event manipulador de eventos-você usar digite System.EventArgs . O tipo de System.Windows.Forms.TreeViewEventArgs fornece informações adicionais, como as propriedades do nó selecionado.
back to the top
Referências
Para obter mais informações sobre como adicionar um controle em um formulário se o tipo de controle for codificado, visite o seguinte site da Web Microsoft Developer Network (MSDN):
Adicionar controles a formulários do Windows
http://msdn2.microsoft.com/en-us/library/Aa984255(VS.71).aspx
Para obter mais informações sobre manipuladores de eventos, visite o seguinte site da MSDN:back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 815780 - Última Revisão: 12/08/2015 02:10:56 - Revisão: 2.5

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

  • kbnosurvey kbarchive kbmt kbwindowsforms kbforms kbide kbtreeview kblistbox kbcombobox kbbutton kbevent kbctrlcreate kbnamespace kbprogramming kbhowtomaster KB815780 KbMtpt
Comentários