Jump to content
PauloFMarques

Apagar textboxes em tabcontrol + reset ao form

Recommended Posts

PauloFMarques

Bom dia mais uma vez, tenho duas duvidas que gostava que me ajudassem a responder se possivel:

1ª Gostava de saber como é possível apagar textboxs comboboxs que se encontram no mesmo form, mas em diferentes tappages.

Já experimentei utilizar o seguinte código:

 ' Identifico todos controles do Forms
       For Each objControle As Control In Me.Controls
           ' Verifico se é um TabControl
           If TypeOf objControle Is TabControl Then
               ' Verifico se é um tabpage
               For Each tpg As TabPage In DirectCast(objControle, TabControl).TabPages
                   ' verifico se é um combobox
                   For Each Combo As Control In tpg.Controls
                       If TypeOf (Combo) Is ComboBox Then
                           DirectCast(Combo, ComboBox).Text = ""
                       End If
                   Next
                Next
            End If
        Next

Mas apenas apaga os comboboxs da primeira tabpage.  :wallbash:

2ª Gostava de saber se é possivel fazer um "reset" ao form, do genero de um flash, ou seja eu efectuo uma acção, e o form fecha e abre de seguida.

:thumbsup:

Obrigado desde já

Paulo Marques


--Sometimes, we do what we want, but we don't want what we have done--

Share this post


Link to post
Share on other sites
obamaself

Dim index As Integer = 0
        For Each td As TabPage In TabControl1.TabPages  'Percorre as tabpages
            For Each cmb As ComboBox In TabControl1.TabPages(index).Controls  'Percorre as combobox de cada tabpage
                cmb.Text = ""
            Next
            index += 1
        Next

O reset eu tambem gostava de saber xD

Share this post


Link to post
Share on other sites
PauloFMarques

A solução que apresentaste não funciona comigo, dá-me o seguinte erro:

" Unable to cast object of type 'System.Windows.Forms.Button' to type 'System.Windows.Forms.ComboBox'."

Em relação ao reset, já experimentei várias coisas, mas nenhuma parece funcionar..

Fico a espera de mais ideias.


--Sometimes, we do what we want, but we don't want what we have done--

Share this post


Link to post
Share on other sites
obamaself

tenta fazer rebuil ao projecto e á solução.

procurei esse erro na internet e ao que parece não é muito normal, porque eu não estou a juntar botao com combobox.

a solução que encontrei foi: "Podes por uma linha em branco no codigo e depois removela. Faz ribuild ao teu programa e á solução."

Share this post


Link to post
Share on other sites
bioshock

Se queres eliminar um controlo num tabpage específico, utilizas:

For Each crl In TabControl1.TabPages(0).Controls
            If TypeOf crl Is Button Then
                TabControl1.TabPages(0).Controls.Remove(crl)
            End If
        Next

Se queres eliminar um controlo em todos os tabpages existentes, utilizas:

For i As Integer = 0 To TabControl1.TabPages.Count - 1
            For Each crl In TabControl1.TabPages(i).Controls
                If TypeOf crl Is Button Then
                    TabControl1.TabPages(i).Controls.Remove(crl)
                End If
            Next
        Next

Share this post


Link to post
Share on other sites
PauloFMarques

@obamaself

Já fiz a rebuild mais do que uma vez, same error.

@bioshock

A ideia não é apagar controlo nenhum, a ideia é apagar o conteudo das textbox's/combobox's


--Sometimes, we do what we want, but we don't want what we have done--

Share this post


Link to post
Share on other sites
obamaself

o erro que te dá não é normal.

no meu pc funciona perfeitamente  😲

Share this post


Link to post
Share on other sites
Caça

o erro que te dá não é normal.

no meu pc funciona perfeitamente  😲

Se adicionares também uma textbox já te vai dar erro...

Tens de fazer a verificação ao controlo, como o bioshock indicou

If TypeOf crl Is Combobox Then


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
bioshock

@bioshock

A ideia não é apagar controlo nenhum, a ideia é apagar o conteudo das textbox's/combobox's

Estás a brincar?

Para isso, apenas tens de alterar a linha:

TabControl1.TabPages(i).Controls.Remove(crl)

E colocar:

crl.Clear()

Muito difícil..😡

Share this post


Link to post
Share on other sites
PauloFMarques

@bioshock

Ao alterar a linha de aparece este erro:

Public member 'clear' on type 'ComboBox' not found.

E mesmo alterando outro bocado de código, passando a apagar as texboxs, ele faz exactamente o que o meu código anterior fazia, apaga na primeira tab, nas outras fica preenchido na mesma.


--Sometimes, we do what we want, but we don't want what we have done--

Share this post


Link to post
Share on other sites
ribeiro55

Clear é um método da classe TextBox.

Convém testares o tipo antes.

            If TypeOf crl Is TextBox Then 
                crl.Clear
            End If


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
bioshock

For i As Integer = 0 To TabControl1.TabPages.Count - 1
            For Each crl In TabControl1.TabPages(i).Controls
                If TypeOf crl Is Textbox Then
                    crl.Clear()
                End If
            Next
        Next

Só não funciona contigo..:thumbsup:

Share this post


Link to post
Share on other sites
PauloFMarques

Foi o que eu fiz, como disse na ultima resposta, alterei o código passando a apagar as textbox's, mesmo por a classe combobox não possuir o método clear, até porque já antes me tinha deparando com um problema parecido, foi ai que "descobri" por assim dizer que não dava para fazer clear em combobox's, mas de qualquer forma, continua a apagar apenas e só na primeira tabpage.

E já agora, continua sem existir soluções para a minha segunda duvida??

Obrigado por tudo.

Paulo Marques


--Sometimes, we do what we want, but we don't want what we have done--

Share this post


Link to post
Share on other sites
bioshock

O meu último post tá lá o código chapado a funcionar para as textboxs.

Se queres para as combobox, não utilizas a função Clear() porque não existe, colocas antes

crl.Text = ""

E deve funcionar.

Share this post


Link to post
Share on other sites
PauloFMarques

Só não funciona contigo..:cheesygrin:

Infelizmente já é um caso normal xD

Desde que comecei a estudar programação, que o código teima a não se dar bem comigo.

Já quando estudava pascal, tinha sempre de arranjar formas mais complicadas de fazer algo simples, pois não conseguia meter o mesmo código que os meus colegas punham a funcionar.

A verdade é que neste caso o código que me deste faz exactamente o mesmo que o código que eu tinha fazia, apaga tudo na primeira tabpage, mas nas outras fica tudo igual.  :thumbsup:


--Sometimes, we do what we want, but we don't want what we have done--

Share this post


Link to post
Share on other sites
bioshock

Bem, mais não te posso fazer. Acabei de testar e funciona.

Btw, isto não é como a roleta. Se dá com uns, dá com todos. :thumbsup:

Share this post


Link to post
Share on other sites
Caça

No código que te foi fornecido existe um ciclo for, por isso enquanto que existirem TabPages ele repete o processo


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
ribeiro55

Felizmente isso não é bem assim.

Se as coisas em programação não funcionam só para ti, é porque és tu que estás a fazer alguma coisa mal.

Correndo o risco de repetir alguma coisa que já tenha sido dita, experimenta colocar este sub na tua form, algures, e chama-a a partir do sítio onde tens agora a chamada para apagar as tais textboxes e comboboxes e o diabo.

    Private Sub LimparCampos(ByVal TabControlAlvo As TabControl)
        For Each TP As TabPage In TabControlAlvo.TabPages
            For Each C As Control In TP.Controls
                If TypeOf C Is TextBox Then CType(C, TextBox).Clear()
                If TypeOf C Is ComboBox Then CType(C, ComboBox).SelectedItem = Nothing
            Next
        Next
    End Sub

Exemplo de chamada:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        LimparCampos(TabControl1)
    End Sub

Quanto à segunda dúvida, tudo é possível. O que pretendes exactamente? Limpar tudo? Fechar e abrir?


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
PauloFMarques

@bioshock

Quem me dera que fosse mesmo assim, em principio deverei ser eu a cometer erros, mas neste caso não sei que erro é que estou a cometer, já tentei de tudo.  :thumbsup:

@Caça

Supostamente deveria ser isso mesmo que acontecia, mas o tópico foi criado mesmo por isso não acontecer  :cheesygrin:

@ribeiro55

Já tinha experimentado isso só não tinha colocado os argumentos, resumindo, copiei novamente o código e... nada.. Continua apenas a apagar a 1ª tabpage.  :wallbash:

Era apenas fazer o reset, do género:

formx.close
formx.show


--Sometimes, we do what we want, but we don't want what we have done--

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.