IF em uma TabPage relação a outra TabPage
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 :
No Load do form alguma coisa parecido com isto :
if (Tabcontrol.tabpage4.capaTextBox.Text == "")
{
BtnExcluir.Enabled = true;
}
else
{
BtnExcluir.Enabled = false;
}
}
Jair Souza
Curtidas 0
Respostas
Jair Souza
12/09/2014
E aí pessoal, alguma idéia ?
GOSTEI 0
Joel Rodrigues
12/09/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:
if (capaTextBox.Text == "")
{
BtnExcluir.Enabled = true;
}
else
{
BtnExcluir.Enabled = false;
}
}GOSTEI 0
Jair Souza
12/09/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...
Não funciona no Load do form e não funciona em botões do tabpage1...
GOSTEI 0
Jair Souza
12/09/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...
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.
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.
GOSTEI 0
Jair Souza
12/09/2014
Bom dia,
Criei um novo projeto com novo form, e mesmo assim não funciona, tens ideia do que acontece ?
Criei um novo projeto com novo form, e mesmo assim não funciona, tens ideia do que acontece ?
GOSTEI 0
Joel Rodrigues
12/09/2014
Em que evento você inseriu esse código para habilitar/desabilitar o botão de acordo com o TextEdit?
GOSTEI 0
Jair Souza
12/09/2014
No Load do form.
GOSTEI 0
Jair Souza
12/09/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 :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140930-075344.png[/img]
Capatextbox está no tabpage 1 :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140930-075355.png[/img]
O form é carregado com este método :
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 :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140930-075344.png[/img]
Capatextbox está no tabpage 1 :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140930-075355.png[/img]
O form é carregado com este método :
this.livroTableAdapter.Fill(this.bDBibliotecaDataSet.Livro);
GOSTEI 0
Joel Rodrigues
12/09/2014
O TextBox está ligado ao DataSet pela propriedade Text?
GOSTEI 0
Jair Souza
12/09/2014
Sim, tanto que indo ao tabpage 4, ele está preenchido com o valor do banco.
GOSTEI 0
Jair Souza
12/09/2014
Confirmando :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140930-185410.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140930-185410.png[/img]
GOSTEI 0
Jair Souza
12/09/2014
E aí pessoal...nenhuma idéia ?
GOSTEI 0
Joel Rodrigues
12/09/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.
GOSTEI 0
Jair Souza
12/09/2014
Aqui está :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20141002-093357.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20141002-093357.png[/img]
GOSTEI 0
Joel Rodrigues
12/09/2014
Amigo, isso aí que você postou é só uma imagem, eu preciso é do link da colagem do seu código.
GOSTEI 0
Jair Souza
12/09/2014
Desculpa, entendi que com o nome "Código Livro" que está na imagem, poderia acessar no pastebin...aqui consegui.
PasteBin
PasteBin
GOSTEI 0
Joel Rodrigues
12/09/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:
Ou seja, se tem um registro aberto, você poderá excluir.
Se for, você pode fazer assim, que é até mais correto:
if (this.bDBibliotecaDataSet.Livro.Rows.Count > 0)
{
BtnExcluir.Enabled = true.
}Ou seja, se tem um registro aberto, você poderá excluir.
GOSTEI 0
Jair Souza
12/09/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 :
Por isto esta parte do código no load do form :
if (capaTextBox.Text != "")
{
BtnExcluir.Enabled =false;
}
else
{
BtnExcluir.Enabled = true;
}
}GOSTEI 0
Joel Rodrigues
12/09/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:
this.bDBibliotecaDataSet.Livro.Rows[0]["Capa"].ToString() != ""
GOSTEI 0
Jair Souza
12/09/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....
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....
GOSTEI 0
Joel Rodrigues
12/09/2014
Você usou a mesma verificação no evento CurrentChanged do DataSource?
GOSTEI 0
Jair Souza
12/09/2014
Sim, mas infelizmente não funcionou.
GOSTEI 0
Jair Souza
12/09/2014
Assim está funcionando perfeitamente, mas gostaria muito de deixar correto e lógico, até para meu aprendizado...mas até agora não sei como...por tudo que verifiquei até agora, ao que parece, o motivo é o tabpage4 não carrega os dados do banco no Load do form, carrega somente quando se acessa o próprio tabpage4...que coisa maluca...
private void FrmLivro_Load(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage4;
tabControl1.SelectedTab = tabPage1;
if (capaTextBox.Text != "")
{
BtnExcluir.Enabled = false;
}
else
{
BtnExcluir.Enabled = true;
}
}
GOSTEI 0
Joel Rodrigues
12/09/2014
Tem algum código no evento SelectedPageChanged?
GOSTEI 0
Jair Souza
12/09/2014
Somente No Selected Index Change, mas nada que justificasse o que está acontecendo... :
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if ((livmc == false) && (tabControl1.SelectedTab == tabPage1))
{
BtnCadastrar.Visible = true;
}
else
{
BtnCadastrar.Visible = false;
}
lblNomeLivro.Text = tituloTextBox.Text;
lblNomeLivro.Font = new Font("Microsoft Sans Serif", 9.5F, FontStyle.Underline);
lblNomeLivro.BorderStyle = System.Windows.Forms.BorderStyle.None;
if (capaTextBox.Text != "")
{
pictureBox2.ImageLocation = capaTextBox.Text;
BtnAdCapa.Enabled=false;
BtnExCapa.Enabled = true;
}
else
{
pictureBox2.ImageLocation = Application.StartupPath.ToString() + "\\CapasLivros\\" + "SemCapa.png";
BtnAdCapa.Enabled = true;
BtnExCapa.Enabled = false;
}
}
GOSTEI 0
Jair Souza
12/09/2014
Nenhuma nova idéia ?
GOSTEI 0