Array
(
)

IF em uma TabPage relação a outra TabPage

Jair Souza
   - 12 set 2014

Em um windowsform com um tabcontrol que tem quatro tabpages, preciso ao abrir o form(que abre sempre na tabpage1), determinar o botão excluir Como enabled=true(O BtnExcluir fica no tabpage1.), se o textboxcapa do tabpage4 estiver vazio, se não false, é possível ?
No Load do form alguma coisa parecido com isto :
#Código

if (Tabcontrol.tabpage4.capaTextBox.Text == "")
            {
                 BtnExcluir.Enabled = true;
            }
            else
            {
                BtnExcluir.Enabled = false;
            }
        }

Jair Souza
   - 15 set 2014

E aí pessoal, alguma idéia ?

Joel Rodrigues
   - 15 set 2014

O TextBox não pertence apenas ao TabPage, então você não precisa referenciá-lo como sendo filho da página. Basta acessar o TextBox pelo seu nome diretamente:
#Código

if (capaTextBox.Text == "")
{
    BtnExcluir.Enabled = true;
}
else
{
    BtnExcluir.Enabled = false;
}
        }

Jair Souza
   - 15 set 2014

Era o que eu entendia, mas não funcionou assim, então vim buscar reforço no fórum...
Não funciona no Load do form e não funciona em botões do tabpage1...

Jair Souza
   - 17 set 2014

Coloquei este código no load do form, mas não adiantou nada...quando inicia o form o bendito BtnExcluir está enabled = true, então clico no tabpage4 onde está o capatextbox e depois volto ao tabpage1 onde fica o BtnExcluir, aí sim o BtnExcluir passa a obedecer o código...não entendi porque...
#Código

if (capaTextBox.Text != "")
            {
                BtnExcluir.Enabled = false;
            }
            else
            {
                BtnExcluir.Enabled = true;
            }

Coloquei um break point neste if e depurei, verifiquei que o texto do capatextbox estava “ ”(Vazio)...não entendo, pois quando abre e vou até o tabpage4, o capatextbox está preenchido...e no tabcontrol_selectedindexchange não tem nada no código que mande carregar o form...
Coloquei um messagebox para capturar o valor do capatextbox quando o form inicia, e mostra vazio...
Movi o capatextbox para o tabpage1, daí funciona..., isto foi somente para teste, pois o capatextbox tem que ficar no tabpage4.

Não sei mais o que tentar, preciso de ajuda.

Jair Souza
   - 29 set 2014

Bom dia,
Criei um novo projeto com novo form, e mesmo assim não funciona, tens ideia do que acontece ?

Joel Rodrigues
   - 29 set 2014

Em que evento você inseriu esse código para habilitar/desabilitar o botão de acordo com o TextEdit?

Jair Souza
   - 29 set 2014

No Load do form.

Jair Souza
   - 30 set 2014

Depurei com um breakpoint no if e descobri que se o capatextbox está no tabpage 4, ao abrir o form ele está vazio, não sei porque???, mas se trago o capatextbox para o tabpage 1, ao abrir o form ele está preenchido com os dados do banco.
Conclusão o problema não está no if, mas sim neste detalhe... Parece não fazer muito sentido...criei um projeto totalmente novo somente um form e o bd e não programei nada mais, fui direto neste ponto, e acontece a mesma coisa...
Sabes porque acontece isto e como resolver ?

Capatextbox está no tabpage 4 :

Clique na imagem para abrir em uma nova janela

Capatextbox está no tabpage 1 :

Clique na imagem para abrir em uma nova janela

O form é carregado com este método :

#Código

this.livroTableAdapter.Fill(this.bDBibliotecaDataSet.Livro);

Joel Rodrigues
   - 30 set 2014

O TextBox está ligado ao DataSet pela propriedade Text?

Jair Souza
   - 30 set 2014

Sim, tanto que indo ao tabpage 4, ele está preenchido com o valor do banco.

Jair Souza
   - 30 set 2014

Confirmando :

Clique na imagem para abrir em uma nova janela

Jair Souza
   - 01 out 2014

E aí pessoal...nenhuma idéia ?

Joel Rodrigues
   - 02 out 2014

Amigo, por favor disponibilize o código completo do seu form aqui utilizando o PasteBin. Talvez olhando todos os eventos que estão sendo tratados possamos identificar o erro.

Jair Souza
   - 02 out 2014

Aqui está :

Clique na imagem para abrir em uma nova janela

Joel Rodrigues
   - 02 out 2014

Amigo, isso aí que você postou é só uma imagem, eu preciso é do link da colagem do seu código.

Jair Souza
   - 02 out 2014

Desculpa, entendi que com o nome "Código Livro" que está na imagem, poderia acessar no pastebin...aqui consegui.

PasteBin

Joel Rodrigues
   - 02 out 2014

Qual é o objetivo de desabilitar o botão com base no texto do TextBox? A ideia é saber se o Fill retornou algum registro?
Se for, você pode fazer assim, que é até mais correto:
#Código

if (this.bDBibliotecaDataSet.Livro.Rows.Count > 0)
{
   BtnExcluir.Enabled = true.
}


Ou seja, se tem um registro aberto, você poderá excluir.

Jair Souza
   - 03 out 2014

É um cadastro de livro, no tabpage1 tem todos os dados do livro, no tabpage4 tem um picturebox com a imagem da capa deste livro e no mesmo tabpage4 tem o capatextbox mostrando o local onde a imagem está salva...a idéia é que não possa excluir o registro sem antes excluir a imagem da capa.
Por isto esta parte do código no load do form :
#Código

if (capaTextBox.Text != "")
{
    BtnExcluir.Enabled =false;
}
else
{
    BtnExcluir.Enabled = true;
}
        }

Joel Rodrigues
   - 03 out 2014

Ao invés de verificar o texto do TextBox, tente verificar o valor contido na coluna equivalente a esse campo diretamente na tabela. Por exemplo:
#Código

this.bDBibliotecaDataSet.Livro.Rows[0]["Capa"].ToString() != ""

Jair Souza
   - 05 out 2014

No load, funcionou,
mas quando passo para o segundo registro, mesmo tendo capa ele hablita o BtnExcluir...a questão é,
porque está identificando o capatextbox como vazio enquanto não se vai até o tabpage4 ??

Depois que se vai até o tabpage4, tudo funciona certo....