DEIXANDO UM TOOLSTRIPBUTTON1 ENABLED

WILLIAMVIEIR 11/08/2015 13:55:03
#449824
Olá, Galera

Estou tentando mudar a propriedade enabled de um toolstrip e não estou conseguindo. Estou fazendo desta seguinte maneira.

public void Formtoolbar(){

MDIPrincipal mdi = new MDIPrincipal();
mdi.toolStripNovo.Enabled = false;
mdi.toolStripGravar.Enabled = false;
}

Chamo essa chasse a partir de um form, ela executa porém não fica enabled = false.

Desde já agradeço.

DS2T 11/08/2015 16:12:44
#449828
A rotina é só isso daí?
Depois você dá um: mdi.Show(); ?

Além do mais, você colocou um breakpoint para verificar se realmente tá disparando aí?

Verificou se no código do form MDIPrincipal no evento Load até no próprio construtor depois de iniciar os controles, tem alguma coisa colocando como true novamente?

Abraços!
WILLIAMVIEIR 12/08/2015 13:56:32
#449855
Sim é só isso.

Estou iniciando um projeto tenho somente dois Forms. Em container e um que abre dentro dele. O toolStrip Fica no Container, quando acesso o outro
form eu chamo a classe que contem o método que ativa e desativa os botoes do toolstrip.

Já executei debugando ele passa pela linha porem não altera e não da nenhum erro.
JABA 12/08/2015 15:09:39
#449858
Resposta escolhida
Citação:

public void Formtoolbar(){
MDIPrincipal mdi = new MDIPrincipal();
mdi.toolStripNovo.Enabled = false;
mdi.toolStripGravar.Enabled = false;
}



O que está acontecendo é que você está instanciando o MDIPrincipal dentro de uma função e, ao termino da função, ele acaba saindo da memória. Você tem que aplicar essas mudanças na instância do MDIPrincipal ativo ou encontrar o lugar onde ele foi declarado no seu projeto e aplicar a função que se encontra abaixo, pois, do jeito que está, está se criando um novo e ele não está sendo utilizado.

// Encontre onde o MDIPrincipal está sendo instanciado e passe-o como parâmetro para essa função
public void Formtoolbar(MDIPrincipal mdi){
mdi.toolStripNovo.Enabled = false;
mdi.toolStripGravar.Enabled = false;
}

WILLIAMVIEIR 12/08/2015 16:23:22
#449867
JABA ,

Entendi oque você quis dizer, mas agora como faço para chamar essa função. Oque eu passo de parâmetro??.
Já tentei somente mdi não deu e também MDIPrincipal também não deu certo.

Olha a imagem em anexo.
JABA 12/08/2015 16:30:10
#449868
Você tem que passar a instância do seu MDIPrincipal como parâmetro nessa função. Certamente ela deve ter sido criada dentro da sua classe [Ô]Program.cs[Ô]. Se isso for verdade, talvez você consiga fazer assim:

s.Formtoolbar(Program.MDIPrincipal); 


ou quem sabe, assim:

s.Formtoolbar(Program.mdi); 


OBS: Tem que passar a variável de instância do jeito que ela foi declarada no seu projeto. Para o código acima, apenas estou supondo que elas tenham sido declaradas dessa maneira.
WILLIAMVIEIR 12/08/2015 17:19:37
#449871
JABA

tentei de ambas formas mas sem sucesso.
JABA 12/08/2015 17:41:48
#449872
Posta uma imagem aí da sua classe Program, por favor.
WILLIAMVIEIR 12/08/2015 17:45:06
#449873
Essa e program
WILLIAMVIEIR 12/08/2015 17:48:57
#449874
essa e a submain

WILLIAMVIEIR 12/08/2015 17:51:13
#449876
é por aqui que eu chamo a função.
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas