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
Pergunta
kuroi
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:
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.