• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

n1ckooo

Ajuda DataGridView e e passar valor entre diferentes forms

18 mensagens neste tópico

Ola a todos tenho 2 problemas preciso da vossa ajuda...

Problema 1:

Forms:

Tenho dois forms, FrmMdi e FrmLogin, este ultimo te abre dentro do FrmMdi.

O FrmMdi tem um StatusStrip com uma label chamada lbl_User.

Eu queria  que na lbluser que esta no FrmMdi aparece-se o nome do utilizador  quando este  se loga-se no FrmLogin.

Nota o FrmMdi nunca se fecha, e abre primeiro que o FrmLogin (quase em simultâneo).

Não sei se perceberam bem o que queria.

Problema 2:

Eu insiro dados numa datagrid, e queria que ao carregar num botão guarda-se num "tabela virtual" o dados da datagrid

e depois carregava noutro e apareciam la os mesmos dados guardados da mesma form que estava;

Alguma duvida digam :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o Problema 2 não entendi o queres.

Para o problema 1 podes criar uma classe estatic chamada user por exemplo e colocar algumas propriedas apra guardar a info que queres. no logim preenches essas propriedas e quando fechares a janela de logim preenches no form principal as lables com os valores dessas propriedades.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

olha faz uns prints e exemplifica.

Quanto ao problema 2(consigo pelo que percebi, solucionar parte)

cria arrays ou cria uma outra datagrid (virtual)

assim:

DataGrid dg = new DataGrid(); (global claro)

quando precisares dela chamas:

dg.QualquerCoisa();

Agora faz imagens com setas e texto que assim percebemos melhor

:)

-editado-

no prob 2 só precisas a DataGrid de passar de um form para o outro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sobre o problema 1 eu tenho o seguinte:

No formMDi tenho  o seguinte

public  string DefineUsertxt21
        {
            get {return s_nomeutilizador;}
            set { s_nomeutilizador = value;
            LabelUser.Text = value;
            MessageBox.Show(value);
            }
        
        }

No FormLogin tenho:




private void btn_validar_Click(object sender, EventArgs e)
        {
if (count > 0)
            {
                
                tipoacesso = Convert.ToInt32( minhatabela.Rows[0]["tipoacesso"]);
             
              frmMdiTouchPos MdiForm = new frmMdiTouchPos();
            [u]  MdiForm.DefineUsertxt21 = minhatabela.Rows[0]["username"].ToString();[/u]
              

                if (tipoacesso > 0)
                {
                    MessageBox.Show("Benvindo" + logar.Username);
                    frm_Admin AbreFormAdmin = new frm_Admin();
                    this.Hide();
                    showadmin.Show();
                    this.Close();
                    
                }
                else
               {

               
                    string mensagem = "Benvindo " +
                      logar.Username + "\nDados Inseridos Correctamente" + "\nClique OK Para Entrar";
                    MessageBox.Show(mensagem, "Login efectuado com Sucesso ",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                   
                    this.Hide();
                    showprincipal.Show();
                    this.Close();
                    
                }
            }
       else
            {
               string msg_erro = "ERRO" + "\nUsername e" +  "\\" +  "ou passoword incorrectos" + "\nTente de novo";
                MessageBox.Show(msg_erro,"Dados Incorretos",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
}

Não percebo porque não dá :S  é que na messagebox aparece bem, na label é que nao...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

falas desta messageBox?

public  string DefineUsertxt21

        {

            get {return s_nomeutilizador;}

            set { s_nomeutilizador = value;

            LabelUser.Text = value;

            MessageBox.Show(value);

            }

       

        }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e o que aparece na label ?

Não aparece nada na label fica como está, não percebo o que se passa... Deveria funcionar não?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a label tem esse nome no form?

Sim o nome é exactamente esse, é estranho...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A label esta numa statusbar ?

Exprimenta forçar o refresh da label .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ou muda de metudo!!!

aqui vai um novo:

o que tens é:

quando o form pai(FrmMDi) abre >> abrir o form filho(FrmLogin)

Deve tar assim o código (no form pai):

FrmLogin form = new FrmLogin();

form.ShowDialog();

[agora adicionas]

if (form.DialogResult == DialogResult.OK)

this.LabelUser.Text = form.[caixa de texto do utilizador, do form FrmLogin].Text;

No botão de Ok do form FrmLogin

pões na parte do if que indica que o login é valido:

this.DialogResult = DialogResult.OK; // diz que o resultado do form é "OK" e vai ser devolvido ao codigo acima.

[depois fazes um exit ao form FrmLogin]

Nota põe a label "LabelUser" como public (propriedades do controlo, modifiers, poblic)

O que isto faz é (no form pai):

chama o form login, quando o form login é fechado este verifica se foi "fechado quando primes OK", caso se ferifique, este vai buscar o valor da caixa de texto onde inseriste o utilizador e mostra-a no form pai na label LabelUser.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ou muda de metudo!!!

aqui vai um novo:

o que tens é:

quando o form pai(FrmMDi) abre >> abrir o form filho(FrmLogin)

Deve tar assim o código (no form pai):

FrmLogin form = new FrmLogin();

form.ShowDialog();

[agora adicionas]

if (form.DialogResult == DialogResult.OK)

this.LabelUser.Text = form.[caixa de texto do utilizador, do form FrmLogin].Text;

No botão de Ok do form FrmLogin

pões na parte do if que indica que o login é valido:

this.DialogResult = DialogResult.OK; // diz que o resultado do form é "OK" e vai ser devolvido ao codigo acima.

[depois fazes um exit ao form FrmLogin]

Nota põe a label "LabelUser" como public (propriedades do controlo, modifiers, poblic)

O que isto faz é (no form pai):

chama o form login, quando o form login é fechado este verifica se foi "fechado quando primes OK", caso se ferifique, este vai buscar o valor da caixa de texto onde inseriste o utilizador e mostra-a no form pai na label LabelUser.

Cumps

Já fiz isso , mas isso nao dá para o que quero, porque os forms ficam separados.

FrmLogin form = new FrmLogin();

Form.Parent = this;                            // esta linha nao funciona com o showdialog

form.Show();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fiz isso , mas isso nao dá para o que quero, porque os forms ficam separados.

FrmLogin form = new FrmLogin();

Form.Parent = this;                            // esta linha nao funciona com o showdialog

form.Show();

Pois tu estas a inclui-lo

Mas faz com o dialog, pois o form pai vai estar vazio a espera do login! Não?

tens outra opçao que é:

cria uma label virtual no form filho, quando o chamares (no pai), aponta(antes de o mostrar) a LabelUser para a virtual depois mandas alterar a virtual que a que existe altera automaticamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois tu estas a inclui-lo

Mas faz com o dialog, pois o form pai vai estar vazio a espera do login! Não?

tens outra opçao que é:

cria uma label virtual no form filho, quando o chamares (no pai), aponta(antes de o mostrar) a LabelUser para a virtual depois mandas alterar a virtual que a que existe altera automaticamente.

Estou de volta e trago boas noticias esse problema já esta resolvido criei uma label virtual como disseste e resultou ;)

Obrigado

Quanto ao problema 2 estou aqui com uma ideia que poderá resultar, seja qual for o resultado volto aqui :D

Mais uma vez obrigado pela vossa colaboração...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu naquela:bem eu dei este post mas devia ter exemplificado mas pelos vistos não foi preciso.eu uso sempre esse método de apontar para objectos virtuais e mais simples que o get set.

quanto ao problema2,na página2 deste tópico eu explico como fazes uma datagrid virtual caso pretendas, cria-a numa classe assim fica acessível a todos os forms.sabes trabalhar com classes?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu naquela:bem eu dei este post mas devia ter exemplificado mas pelos vistos não foi preciso.eu uso sempre esse método de apontar para objectos virtuais e mais simples que o get set.

quanto ao problema2,na página2 deste tópico eu explico como fazes uma datagrid virtual caso pretendas, cria-a numa classe assim fica acessível a todos os forms.sabes trabalhar com classes?

Sinceramente não entendo muito sobre classes.. e se puderes explica um o se cria uma datagrid virtual...

obrigado desculpem a demora mas tenho estado sem pc :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora