Resposta Proposta Metodo para limpar textbox

  • quarta-feira, 15 de fevereiro de 2012 20:37
     
     

    Boa tarde,

    Estou buscando uma solução pratica para limpar o conteudo de varias textbox de uma vez.

    Tenho um formulario de cadastro com uma tabcontrol com 3 abas. Neste componente estão as textbox, em cada aba.

    Gostaria de criar um metodo que a cada vez que for chamado limpa de uma vez todas as textbox da aba.

    Alguém pode me dar uma ideia de como fazer isso? Ao inves de chamar o metodo clear para cada textbox?

    Desde já agradeço.

Todas as Respostas

  • quarta-feira, 15 de fevereiro de 2012 20:42
     
      Contém Código
    foreach (Control controle in form1.Controls)
    {
        if (controle is TextBox)
        {
            TextBox txt = (controle) as TextBox;
            txt.Text = string.Empty;
        }
    }
    For Each controle As Control In form1.Controls
    	If TypeOf controle Is TextBox Then
    		Dim txt As TextBox = TryCast(controle, TextBox)
    		txt.Text = String.Empty
    	End If
    Next



    Paulo César Viana
    .NET Developer
    MCC - Microsoft Community Contributor
    MCP - Microsoft Certified Professional
    MCTS - Microsoft Certified Technology Especialist
    --
    Marque as respostas e contribua para uma melhora no fórum.


  • quarta-feira, 15 de fevereiro de 2012 20:58
     
     

    Paulo,

    Este código esta apresentando erro de sintax, estou desenvolvendo em VB.NET e não estou conseguindo identifiicar os erros. Não tenho muita experiencia em VB.NET

  • quarta-feira, 15 de fevereiro de 2012 21:03
     
      Contém Código

    Tente:

            For Each controle As Control In Me.Form.Controls
                If TypeOf controle Is TextBox Then
                    Dim txt As TextBox = TryCast(controle, TextBox)
                    txt.Text = String.Empty
                End If
            Next

    Se der erro poste o erro.

    Segue um exemplo para você brincar.

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
         <asp:TextBox ID="TextBox1" runat="server">ab</asp:TextBox>
            <br />
            <asp:TextBox ID="TextBox2" runat="server">cd</asp:TextBox>
            <br />
            <asp:TextBox ID="TextBox3" runat="server">ef</asp:TextBox>
            <br />
            <asp:TextBox ID="TextBox4" runat="server">msdn</asp:TextBox>
            <br />
            <br />
            <asp:Button ID="Button1"
                runat="server" Text="limpar" />
        
        </div>
        </form>
    </body>
    </html>
    

    Partial Class _Default
        Inherits System.Web.UI.Page
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            For Each controle As Control In Me.Form.Controls
                If TypeOf controle Is TextBox Then
                    Dim txt As TextBox = TryCast(controle, TextBox)
                    txt.Text = String.Empty
                End If
            Next
        End Sub
    End Class
    


    Paulo César Viana
    .NET Developer
    MCC - Microsoft Community Contributor
    MCP - Microsoft Certified Professional
    MCTS - Microsoft Certified Technology Especialist
    --
    Marque as respostas e contribua para uma melhora no fórum.


  • quinta-feira, 16 de fevereiro de 2012 11:57
     
     Resposta Proposta

    Eu jah tive esse mesmo problema, o que acontece no codigo do Paulo é que se tiver um groubox ou uma outra aba ele não entra nos controles dentro dele

    Exemplo de como eu fiz:

    No botão limpar voce colocar Limpa_Controls(Me)

    e coloque essa função

    Public Sub Limpa_Controls(ByVal Tela As Control)
            On Error Resume Next
            Dim Text As Object
            For Each Text In Tela.Controls
                If TypeOf Text Is System.Windows.Forms.GroupBox Or TypeOf Text Is System.Windows.Forms.TabPage Then
                    Limpa_Controls(Text) 'Se forgroup ou aba vai refazer tudo dentro desse grupo
                End If


                If TypeOf Text Is System.Windows.Forms.TextBox Then
                    Text.Text = ""
                ElseIf TypeOf Text Is System.Windows.Forms.ComboBox Then
                    Text.SelectedIndex = -1
                    Text.Text = ""
                ElseIf TypeOf Text Is System.Windows.Forms.CheckBox Then
                    Text.Checked = False
                End If


            Next


        End Sub

    • Sugerido como Resposta Danilo - HamsteR quinta-feira, 16 de fevereiro de 2012 11:57
    •  
  • terça-feira, 21 de fevereiro de 2012 13:45
     
     

    Oi Danilo,

    O código esta executando sem erro, mas não funciona, nao limpa as textbox. Executei em modo debug e pelo que eu entendi em algum momento ele deveria entrar dentro do segundo If, e ele nao entrou, e nem mesmo no primeiro if, onde há a chama recursiva

    obrigada

  • terça-feira, 21 de fevereiro de 2012 13:47
     
     

    Oi Paulo,

    O código executa sem erros, mas não limpa as textbox