Ir para conteúdo
Fórum Script Brasil
  • 0

Converter Objeto Para Classe Variavel C#


kuroi

Pergunta

C# 2003 Windows Application

tenho uma funcao pra limpar o text de todas as TextBox que tiverem em um formulario que sera passado como parametro. ou seja, não importa em que formulario eu esteja, é so chamar essa funcao que ele vai limpar todos os campos.

encontrei o seguinte problema:

passando o formulario como parametro, eu uso um foreach pra pesquisar todas as textbox que existerem na propriedade .Controls do form.

so que tenho um problema. se o TextBox, por exemplo, estiver dentro de um GroupBox, ele não fica entre os COntrols do form, e sim entre os Controls do GroupBox.

o modo como achei pra resolver isso, seria testar o tipo de dado de cada control, e se for um GroupBox, eu chamo novamente a funcao, passando ele mesmo como parametro.

então declarei o parametro como object. porque como antes estava como form, ele não aceitaria um GroupBox.

so que como object não tem a propriedade Controls, ele da erro "'object' does not contain a definition for 'Controls'"

a funcao está assim:

        public void LimpaForm(object fForm)
        {
            foreach (Control mControl in fForm.Controls)
            {
                if (
                    mControl.GetType().ToString() == "System.Windows.Forms.GroupBox" ||
                    mControl.GetType().ToString() == "System.Windows.Forms.Panel" ||
                    mControl.GetType().ToString() == "System.Windows.Forms.TabControl" ||
                    mControl.GetType().ToString() == "System.Windows.Forms.TabPage"
                    )
                {
                    clFuncoes y = new clFuncoes();
                    y.LimpaForm(mControl);
                }
                if (mControl.GetType().ToString() == "System.Windows.Forms.TextBox") mControl.Text = "";
            }
        }
[/code] como fazer então?? pensei em adicionar um parametro que seria o tipo do objeto que estava sendo passado no primeiro parametro. assim, eu faria a conversao. mas não sei como passar o tipo. tentei usando um parametro do tipo Type, mas não sei como converter. o que fazer então?? alias, em Visual Basic, a funcao funciona certinho assim:
[code]    Public Sub LimpaForm(ByVal fForm As Object)
        Dim mControl As Control
        For Each mControl In fForm.Controls
            If mControl.GetType() Is (New GroupBox).GetType Or mControl.GetType() Is (New Panel).GetType Or _
            mControl.GetType() Is (New TabControl).GetType Or mControl.GetType Is (New System.Windows.Forms.TabPage).GetType Then LimpaForm(mControl)

            If mControl.GetType() Is (New TextBox).GetType Then mControl.Text = ""
        Next
    End Sub

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

valeu, depois de fica quase uma hora pra conseguir fazer com cast, quando terminei, na hora pensei num jeito bem mais simples. ficou assim e funcionu:

        public void LimpaForm(Control fForm)
        {
            foreach (Control mControl in fForm.Controls)
            {
                if (
                    mControl.GetType().ToString() == "System.Windows.Forms.GroupBox" ||
                    mControl.GetType().ToString() == "System.Windows.Forms.Panel" ||
                    mControl.GetType().ToString() == "System.Windows.Forms.TabControl" ||
                    mControl.GetType().ToString() == "System.Windows.Forms.TabPage"
                    )
                {
                    clFuncoes y = new clFuncoes();
                    y.LimpaForm(mControl);
                }
                if (mControl.GetType().ToString() == "System.Windows.Forms.TextBox") mControl.Text = "";
            }
        }[/code]

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...