none
Atualização da tela com Timer RRS feed

  • Pergunta

  • Boa tarde , preciso da ajuda de vcs mas uma vez.

    Tenho dois  forms no meu projeto, e cada um destes forms contem um relatorio criado com reportviewer, estes dois relatórios trabalham da seguinte forma, coloco umas informações no cabeçalho do form ai ele me demonstra um gráfico, e este relatório e atualizado de tempos em tempos, ate ai ok tudo funcionando.

    Agora vem o porem, como são dois forms, estes forms ficam sendo aletrnados entre eles de tempos em tempos, só que quando um form chama o outro, as informações que digitei vem em branco pedindo para ser digitadas novamente, eu preciso que quando digitar uma vez as informações digitadas fiquem gravadas, e só digitar novamente se eu fechar meu projeto.

    Obrigado.


    JUNIOR GUERREIRO T.I

    quarta-feira, 4 de janeiro de 2017 16:27

Respostas

  • Boa noite Junior Guerreiro

    Após alguns ajustes e conversa pelo Skype enfim conseguimos resolver seu problema! Segue abaixo parte do código que foi realizado!

    //FORM1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.DirectoryServices; namespace WindowsFormsApplication { public partial class Form1 : Form { Form2 form; Timer _timer = new Timer(); public Form1() { InitializeComponent(); form = new Form2(this); _timer.Interval = 10000; _timer.Tick += Timer_Tick; } private void Timer_Tick(object sender, EventArgs e) { MessageBox.Show("sss"); _timer.Interval = 10000; _timer.Tick += timer1_Tick; } private void timer1_Tick(object sender, EventArgs e) { if (this.Visible == true) { this.Visible = false; _timer.Stop(); form.Visible = true; form.StarTimer(); } } protected override void OnClosing(CancelEventArgs e) { _timer.Stop(); base.OnClosing(e); } private void Form1_Load(object sender, EventArgs e) { StarTimer(); } public void StarTimer() { _timer.Start(); } private void button1_Click(object sender, EventArgs e) { txtUsuario.Focus(); } } }

    //FORM2 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication { public partial class Form2 : Form { Form3 form; Timer _timer = new Timer(); public Form2(Form1 fInicial) { InitializeComponent(); form = new Form3(fInicial); _timer.Interval = 10000; _timer.Tick += Timer_Tick; } public void StarTimer() { _timer.Start(); } private void Timer_Tick(object sender, EventArgs e) { if (this.Visible == true) { this.Visible = false; _timer.Stop(); form.Visible = true; form.StarTimer(); } } protected override void OnClosing(CancelEventArgs e) { _timer.Stop(); base.OnClosing(e); } } }

    //FORM3 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication { public partial class Form3 : Form { Form1 form; Timer _timer = new Timer(); public Form3(Form1 fInicial) { InitializeComponent(); form = fInicial; _timer.Interval = 10000; _timer.Tick += Timer_Tick; } private void Timer_Tick(object sender, EventArgs e) { if (this.Visible == true) { this.Visible = false; _timer.Stop(); form.Visible = true; form.StarTimer(); } } protected override void OnClosing(CancelEventArgs e) { _timer.Stop(); base.OnClosing(e); } public void StarTimer() { _timer.Start(); } } }

    Qualquer dúvida estou a disposição!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais


    sexta-feira, 6 de janeiro de 2017 00:51

Todas as Respostas

  • Boa tarde Junior Guerreiro

    Para ficar mais fácil o entendimento, você poderia disponibilizar o código que chamar entre os Forms?

    São muitas informações que precisam ser guardadas?


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quarta-feira, 4 de janeiro de 2017 17:21
  • Daniel Obrigado pela atenção, segue os codigos

    Form1

     public partial class frmGraficoProd1 : Form
        {
            Timer _timer = new Timer();

            public frmGraficoProd1()
            {
                InitializeComponent();

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {

                DateTime dtDe, dtAte;
                DateTime.TryParse(txtDtInicial.Text, out dtDe);
                DateTime.TryParse(txtDtFinal.Text, out dtAte);

                this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text));

                this.reportViewer1.RefreshReport();

            }

            private void frmGraficoVendas_Load(object sender, EventArgs e)
            {
                // TODO: esta linha de código carrega dados na tabela 'GraficosVendasDataSet.GaficosVendas'. Você pode movê-la ou removê-la conforme necessário.
               
            }

            private void btnPesquisar_Click(object sender, EventArgs e)
            {
                this.reportViewer1.RefreshReport();
                _timer.Start();
            }

            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }

            private void lblProduto_Click(object sender, EventArgs e)
            {

            }

            public static frmGraficoProd2 staticVariavel = null;

            private void timer1_Tick(object sender, EventArgs e)
            {
                if (progGrafico.Value > 50000)
                {
                    progGrafico.Value = progGrafico.Value + 2;
                }
                else
                {
                    timer1.Enabled = false;
                    this.Visible = true;
                    frmGraficoProd2 grafprod = new frmGraficoProd2();
                    grafprod.Show();

                }
            }

            private void progGrafico_Click(object sender, EventArgs e)
            {

            }

            private void txtDtFinal_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
            {

            }

        }
    }

    Form2

     public partial class frmGraficoProd2 : Form
        {
            Timer _timer = new Timer();

            public frmGraficoProd2()
            {
                InitializeComponent();

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {

                DateTime dtDe, dtAte;
                DateTime.TryParse(txtDtInicial.Text, out dtDe);
                DateTime.TryParse(txtDtFinal.Text, out dtAte);

                this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text));

                this.reportViewer1.RefreshReport();
            }
            
            

            private void frmGraficoProd2_Load(object sender, EventArgs e)
            {
                // TODO: esta linha de código carrega dados na tabela 'GraficosVendasDataSet.GaficosVendas'. Você pode movê-la ou removê-la conforme necessário.
       
            }
          

            private void btnPesquisar_Click(object sender, EventArgs e)
            {

                this.reportViewer1.RefreshReport();
                _timer.Start();
            }

            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }
               

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                if (progBarProd2.Value > 50000)
                {
                    progBarProd2.Value = progBarProd2.Value + 2;
                }
                else
                {
                    timer2.Enabled = false;
                    this.Visible = true;
                    frmGraficoProd1 grafprod1 = new frmGraficoProd1();
                    grafprod1.Show();
                   

                }
            }
        }
    }

    Então Daniel preciso que quando o Timer chame o formulario ele não abra uma nova instancia, e sim a mesma intancia que ja esta aberta.


    JUNIOR GUERREIRO T.I

    quarta-feira, 4 de janeiro de 2017 17:43
  • Boa tarde Junior Guerreiro

    Pelo que entendi os valores que precisam ser armazenados são 

    dtDe.ToString("yyyyMMdd"),

    dtAte.ToString("yyyyMMdd"),

    (txtProduto.Text)

    É isso?


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quarta-feira, 4 de janeiro de 2017 17:50
  • Correto, estes valores eu digito no form que faz uma consulta em um select no meu banco de dados SQL.


    JUNIOR GUERREIRO T.I

    quarta-feira, 4 de janeiro de 2017 17:52
  • Faz o seguinte 

    No FORM2

    public frmGraficoProd2(DateTime dtDe, DateTime dtAte, string produto) { InitializeComponent();

    txtDtInicial.Text = dtDe.ToString();
       txtDtFinal.Text = dtAte.ToString();
       txtProduto.Text = produto.ToString();

    _timer.Interval = 10000; _timer.Tick += Timer_Tick; }

    No FORM1

    private void timer1_Tick(object sender, EventArgs e)
    {
       if (progGrafico.Value > 50000)
       {
          progGrafico.Value = progGrafico.Value + 2;
       }
       else
       {
          DateTime dtDe, dtAte;
          DateTime.TryParse(txtDtInicial.Text, out dtDe);
          DateTime.TryParse(txtDtFinal.Text, out dtAte);
    
          timer1.Enabled = false;
          this.Visible = true;
          frmGraficoProd2 grafprod = new frmGraficoProd2(dtDe, dtAte, txtProduto.Text);
          grafprod.Show();
       }
    }

    Acredito que isso resolva!

    Qualquer dúvida estou a disposição!



    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quarta-feira, 4 de janeiro de 2017 18:08
  • Daniel eu não sei bem se expliquei direito.

    o que eu preciso e o seguinte, eu abro o form1 e preencho os campos data inicial e final e produto X ok.

    Ai abro o form2 e preencho tambem data inicial e final e produto Y. ai tenho um timer que como te mostrei no codigo fica mudando de tempos em tempos do form1 para o form2, só que quando ele chama o form1 novamente as inforamções de data inicial e data final e produto X que coloquei no form1 sumiram, ei sso acontece tambem no fomr2 quando ele troca para o form2, preciso que as informações sejam mantidas quando ele trocar o form, as informações não mudem.

    Pelo que entendo no seu codigo acima, esta fazendo com que eu grave a informação do form1 também no form2, e não e isso que preciso, o que realmente preciso que que o form não abra uma nova instancia e sim mantenha a mesma instancia, porque toda vez que o timer chama o form1 ele abre uma nova instancia, e e isso que não quero que faça.

    não seu se consegui explicar melhor.


    JUNIOR GUERREIRO T.I


    quarta-feira, 4 de janeiro de 2017 18:19
  • Então Junior Guerreiro

    Desconsidera tudo anterior! rs

    Vamos lá é mais simples então, você pode somente esconder os Fom1 quando chamar o 2 e esconder o Form2 quando chamar o 1.

    frmGraficoProd1

    public partial class frmGraficoProd1 : Form
    {
       Timer _timer = new Timer();
       Form form;

    private void timer1_Tick(object sender, EventArgs e)
    {
       if (progGrafico.Value > 50000)
       {
          progGrafico.Value = progGrafico.Value + 2;
       }
       else
       {
          timer1.Enabled = false;
          this.Visible = false;
          if (form == null)
          {
             form = new frmGraficoProd2(this);
             form.Show();
          }
          else
          {
             form.Visible = true;
          }
       }
    }

    frmGraficoProd2 

    public partial class frmGraficoProd2 : Form
    {
       Timer _timer = new Timer();
       Form form;

    public frmGraficoProd2(Form f) { InitializeComponent(); form = f;

    _timer.Interval = 10000; _timer.Tick += Timer_Tick; }


    private void timer1_Tick(object sender, EventArgs e)
    {
       if (progBarProd2.Value > 50000)
       {
          progBarProd2.Value = progBarProd2.Value + 2;
       }
       else
       {
          timer2.Enabled = false;
          this.Visible = false;
          form.Visible = true;            
       }
    }
    
    

    Verifica desta forma!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quarta-feira, 4 de janeiro de 2017 19:00
  • Daniel, então este codigo que vc me mandou a para abrir o outro formulario, o form2, isso ja esta tudo funcionando, eu abro o form1 e depois de um tempo ele abre o form2 , ok isso esta funcionando.

    o problema esta na instância do form que esta abrindo, eu não quero que o sistema abra varias intancia do mesmo form e sim o mesmo form sempre que mudar.

    EX. abri meu projeto e abri o form1 coloquei data inicial, data final e o nome do meu produto X, ele carregou o dados no gráfico referente ao produto X que digitei no form1

    Agora o timer vai chamar o form2 , abriu o form2  também preenchi com data inicial, data final e o produto Y no form2, agora o timer vai chamar novamente o form1, só que quando chamar o form1 novamente já tem que vir com as informações de digitei na primeira vez que abri o form1, mas não esta acontecendo, quando ele chama o form1 novamente pra tela, está tudo em branco as informações de data inicial, data final e Produto.


    JUNIOR GUERREIRO T.I

    quarta-feira, 4 de janeiro de 2017 19:36
  • Junior Guerreiro fiz testes aqui e funcionou!

    Neste exemplo que te mandei, é instanciado o objeto somente no primeiro acesso, o restante ele utiliza o objeto instanciado anteriormente!

    Qualquer coisa é só chamar!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quarta-feira, 4 de janeiro de 2017 22:13
  • Daniel bom dia..

    Então o codigo que vc passou acima deu certo, mas tem um detalhe, o seu codigo acima abriu o form1 preenchi os dados, ai abriu o form2 eu preenchi os dados ai ele retornou para o form1 com os dados preenchidos, perfeito, mas ai vem o detalhe, eu preciso que ele continue fazendo o processo abri novamente o form2, depois abrir novamente o form1, e ficar assim abrindo um e outro ate eu sair da aplicação, e outra coisa, como faço se eu colocar um terceiro form ou um form3 como eu faço.

    No código acima quando ele retorna para o form1 ele para de trocar de tela, preciso que ele continue fazendo o mesmo procedimento de trocar de tela. E outra pergunta como faço se precisar incluir mais um form.


    JUNIOR GUERREIRO T.I


    quinta-feira, 5 de janeiro de 2017 02:40
  • Bom dia grande Junior Guerreiro,

    Me desculpe a demora!

    Fiz um projetinho aqui para realizar testes!

    Vou te mandar a forma de chamar os 3 FORM em sequencia sem perder os valores informados em cada FORM, ai é só você adequar a parte da chama dos relatórios!

    FORM1

    Modelo Formulário 1

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.DirectoryServices;
    
    namespace WindowsFormsApplication
    {
        public partial class Form1 : Form
        {
            Form2 form;
            Timer _timer = new Timer();
    
            public Form1()
            {
                InitializeComponent();
    
                form = new Form2(this);
    
                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }
    
            private void Timer_Tick(object sender, EventArgs e)
            {
                if (this.Visible == true)
                {
                    this.Visible = false;
                    _timer.Stop();
                    form.Visible = true;
                    form.StarTimer();
                }
            }
    
            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                StarTimer();
            }
    
            public void StarTimer()
            {
                _timer.Start();
            }
        }
    }


    FORM2

    Modelo Formulário 2

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication
    {
        public partial class Form2 : Form
        {
            Form3 form;
            Timer _timer = new Timer();
    
            public Form2(Form1 fInicial)
            {
                InitializeComponent();
    
                form = new Form3(fInicial);
    
                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }
    
            public void StarTimer()
            {
                _timer.Start();
            }
    
            private void Timer_Tick(object sender, EventArgs e)
            {
                if (this.Visible == true)
                {
                    this.Visible = false;
                    _timer.Stop();
                    form.Visible = true;
                    form.StarTimer();
                }
            }
    
            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }
        }
    }
    

    FORM3

    Modelo Formulário 2

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication
    {
        public partial class Form3 : Form
        {
            Form1 form;
            Timer _timer = new Timer();
    
            public Form3(Form1 fInicial)
            {
                InitializeComponent();
    
                form = fInicial;
    
                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }
    
            private void Timer_Tick(object sender, EventArgs e)
            {
                if (this.Visible == true)
                {
                    this.Visible = false;
                    _timer.Stop();
                    form.Visible = true;
                    form.StarTimer();
                }
            }
    
            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }
    
            public void StarTimer()
            {
                _timer.Start();
            }
        }
    }
    

    É isso ai!!!!!

    Qualquer dúvida é só chamar!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 12:48
  • Boa Daniel obrigado, vou testar aqui, agora uma divida, quando chegar o no form3 ele chama novamente o form1 e continua o processo nesse seu código acima tipo um looping.

    obrigado.


    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 12:57
  • Exatamente, retorna no FORM1 com a informação que foi informada anteriormente e continua o fluxo chama o 2 e o 3.

    Fica em LOOP!

    Após o teste se puder marcar como resposta agradeço!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 13:01
  • Daniel acho que estou fazendo algo errado, não estou conseguindo encaxar o seu codigo no meu , no form1 estou com um erro, agora não sei o que esta errado.

    meu codigo do form1

      public partial class frmGraficoProd1 : Form
        {


            Timer _timer = new Timer();

            Form form;
            private frmGraficoProd2 frmGraficoProd2;

            public frmGraficoProd1()
            {
                InitializeComponent();

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            public frmGraficoProd1(frmGraficoProd2 frmGraficoProd2)
            {
                // TODO: Complete member initialization
                this.frmGraficoProd2 = frmGraficoProd2;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {


                DateTime dtDe, dtAte;
                DateTime.TryParse(txtDtInicial.Text, out dtDe);
                DateTime.TryParse(txtDtFinal.Text, out dtAte);

                this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text));

                this.reportViewer1.RefreshReport();

            }

            private void frmGraficoVendas_Load(object sender, EventArgs e)
            {
              
               
            }

            private void btnPesquisar_Click(object sender, EventArgs e)
            {
                this.reportViewer1.RefreshReport();
                _timer.Start();
            }

            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }

            private void lblProduto_Click(object sender, EventArgs e)
            {

            }



            private void timer1_Tick(object sender, EventArgs e)
            {
                if (progGrafico.Value > 50000)
                {
                    progGrafico.Value = progGrafico.Value + 2;
                }

                else
                {

                    timer1.Enabled = false;
                    this.Visible = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        form.Visible = true;
                        form.StarTimer1();-> esta acusando erro
                    }
                }
            }

            private void progGrafico_Click(object sender, EventArgs e)
            {

            }
                    private void txtDtFinal_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
            {

            }

        }
    }

    meu codigo do Form2

     public partial class frmGraficoProd2 : Form
        {
            Timer _timer = new Timer();

            Form3 form;
            private frmGraficoProd1 frmGraficoProd1;
            

            public frmGraficoProd2(Form1 finicial) -> acusando erro
            {
                InitializeComponent();

                form = new Form3(finicial);

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            public frmGraficoProd2(frmGraficoProd1 frmGraficoProd1)
            {
                // TODO: Complete member initialization
                this.frmGraficoProd1 = frmGraficoProd1;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {

                  DateTime dtDe, dtAte;
                  DateTime.TryParse(txtDtInicial.Text, out dtDe);
                  DateTime.TryParse(txtDtFinal.Text, out dtAte);

                this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text));

                this.reportViewer1.RefreshReport();
            }
            
            

            private void frmGraficoProd2_Load(object sender, EventArgs e)
            {
                // TODO: esta linha de código carrega dados na tabela 'GraficosVendasDataSet.GaficosVendas'. Você pode movê-la ou removê-la conforme necessário.
       
            }
          

            private void btnPesquisar_Click(object sender, EventArgs e)
            {

                this.reportViewer1.RefreshReport();
                _timer.Start();
            }

            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }
               

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                if (progBarProd2.Value > 50000)
                {
                    progBarProd2.Value = progBarProd2.Value + 2;
                }
                else
                {
                    timer2.Enabled = false;
                    this.Visible = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        _timer.Stop();
                        form.Visible = true;-> esta acusando erro
                        form.StarTimer(); -> esta acusando erro
                    }
                }

            }
        }
    }


    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 13:35
  • No FORM1 

    Verifica a parte que esta em NEGRITO

    public partial class Form1 : Form
        {
            Form2 form;
            Timer _timer = new Timer();
    
            public Form1()
            {
                InitializeComponent();
    
                form = new Form2(this); //ESSA PARTE VOCÊ NÃO COLOCOU
    
                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }
    
            private void Timer_Tick(object sender, EventArgs e)
            {
                if (this.Visible == true)
                {
                    this.Visible = false;
                    _timer.Stop();
                    form.Visible = true;
                    form.StarTimer();
                }
            }

    Form2

    public partial class frmGraficoProd2 : Form { Timer _timer = new Timer(); //Form3 form; ALTERAR PARA LINHA DE BAIXO

    Form1 form;

    private frmGraficoProd1 frmGraficoProd1; public frmGraficoProd2(Form1 finicial) -> acusando erro { InitializeComponent(); //form = new Form3(finicial);ALTERAR PARA LINHA DE BAIXO

    form = finicial; _timer.Interval = 10000; _timer.Tick += Timer_Tick; }


    Realiza os ajustes em negrito!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 13:48
  • Daniel obrigado pela paciência, mas no meu codigo não estou conseguindo colocar o form.StartTime(); meu codigo não acha esat variável...só faltou isso no codigo..

    Olha como ficou meu codigo

     private void timer3_Tick(object sender, EventArgs e)
            {
                if (progGrafico3.Value > 50000)
                {
                    progGrafico3.Value = progGrafico3.Value + 2;
                }
                else
                {
                    timer3.Enabled = false;
                    this.Visible = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        _timer.Stop();
                        form.Visible = true;

                        form.StartTime(); -> Quando coloco esta variável apresenta erro como se meu codigo não conhecesse

                    }


    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 15:20
  • Acredito que tenha faltado este métodos nos 2 FORMS

    public void StarTimer()
    {
       _timer.Start();
    }


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 15:42
  • Daniel deu certo estava faltado o método mesmo, agora uma pergunta, este seu código acima, o que eu estou preenchendo no form1 esta levando para o form2, porque se estiver dessa forma, não e o que preciso, os forms tem informações diferentes um do outro, então quando abrir um form1 eu preencho as informações, dai quando abrir o form2 eu também preencho as informações, depois que preencher uma vez já era não precisa preencher mais ate eu sai da aplicação, parece que da forma que vc fez o código esta levando a informação de um form para o outro, e por isso não esta abrindo o form seguinte.

    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 16:14
  • Junior Guerreiro

    Pode ficar tranquilo, pois os valores digitados nos COMPONENTES não estando sendo passando entre os formularios, o que passo de um formulario para o outro é qual formulario será aberto, somente isso!

    Você mesmo pode testar ai, o que você digita no FORM1 será para o FORM1, o que for digitado no FORM2 será informações somente para o FORM2.

    Creio que agora tudo esteja conforme sua necessidade!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 16:17
  • Daniel acabei de fazer o teste aqui, e o que aconteceu e que não abriu o form2, simplesmente fechou o form1 e não abriu o form2...

    Código Form1

     public partial class frmGraficoProd1 : Form
        {


            Timer _timer = new Timer();

            frmGraficoProd2 form;
          
            public frmGraficoProd1()
            {
                InitializeComponent();

                form = new frmGraficoProd2(this);

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {


                DateTime dtDe, dtAte;
                DateTime.TryParse(txtDtInicial.Text, out dtDe);
                DateTime.TryParse(txtDtFinal.Text, out dtAte);

                this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text));

                this.reportViewer1.RefreshReport();

            }

            private void frmGraficoVendas_Load(object sender, EventArgs e)
            {

                StarTimer();
            }

            private void btnPesquisar_Click(object sender, EventArgs e)
            {
                this.reportViewer1.RefreshReport();
                _timer.Start();
            }

            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }
       
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (progGrafico.Value > 50000)
                {
                    progGrafico.Value = progGrafico.Value + 2;
                }
                else
                {
                    timer1.Enabled = false;
                    this.Visible = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        _timer.Stop();
                        form.Visible = true;
                        form.StarTimer();
                    }
                }
            }

            public void StarTimer()
            {
                _timer.Start();
            }
            

        }

    }

    Código Form2

    public partial class frmGraficoProd2 : Form
        {
            Timer _timer = new Timer();

            frmGraficoProd3 form;

            public frmGraficoProd2(frmGraficoProd1 finicial)
            {
                InitializeComponent();

                form = new frmGraficoProd3(finicial);

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {

                  DateTime dtDe, dtAte;
                  DateTime.TryParse(txtDtInicial.Text, out dtDe);
                  DateTime.TryParse(txtDtFinal.Text, out dtAte);

                this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text));

                this.reportViewer1.RefreshReport();
            }
            
            

            private void frmGraficoProd2_Load(object sender, EventArgs e)
            {
             
            }
          

            private void btnPesquisar_Click(object sender, EventArgs e)
            {

                this.reportViewer1.RefreshReport();
                _timer.Start();
            }

            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }
               

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                if (progBarProd2.Value > 50000)
                {
                    progBarProd2.Value = progBarProd2.Value + 2;
                }
                else
                {
                    timer2.Enabled = false;
                    this.Visible = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        _timer.Stop();
                        form.Visible = true;
                        form.StarTimer();
                    }
                  
                }

            }
            public void StarTimer()
            {
                _timer.Start();
            }
        }
    }

    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 16:27
  • Junior Guerreiro,

    São alguns detalhes que você deixou passar!

    private void timer1_Tick(object sender, EventArgs e)
    {
       if (progGrafico.Value > 50000)
       {
          progGrafico.Value = progGrafico.Value + 2;
       }
       else
       {
          timer1.Enabled = false;
          this.Visible = false; //REMOVA ESTA LINHA POIS ELA TEM QUE ESTAR DENTRO DO IF CONFORME JÁ ESTA
          if (this.Visible == true)                                                                   |
          {                                                                                           |
             this.Visible = false;                                                        <<<<<<<<<<--
             _timer.Stop();
             form.Visible = true;
             form.StarTimer();
          }
       }
    }


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 16:50
  • Daniel, blz tirei a linha agora o que esta acontecendo e que o form2 so da uma piscada na tela e ja volta para o form1, assim muito rápido, pisca na tela e fecha e volta para o from1.

    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 17:08
  • o FORM2 esta com o mesmo problema que estava no FORM1


    private void timer1_Tick(object sender, EventArgs e)
    {
       if (progBarProd2.Value > 50000)
       {
          progBarProd2.Value = progBarProd2.Value + 2;
       }
       else
       {
          timer2.Enabled = false;
          this.Visible = false; //REMOVER POIS TEM QUE ESTAR DENTRO DO IF
          if (this.Visible == true)
          {
             this.Visible = false;
             _timer.Stop();
             form.Visible = true;
             form.StarTimer();
          }
       }
    }


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 17:21
  • Daniel eu removi de todos os forms, e mesmo assim o form2 só pisca na tela e ja volta para o form1

    Form2

     private void timer1_Tick(object sender, EventArgs e)
            {
                if(progBarProd2.Value > 50000)
                {
                progBarProd2.Value = progBarProd2.Value + 2;
                }
                else
                {
                    timer2.Enabled = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        _timer.Stop();
                        form.Visible = true;
                        form.StarTimer();
                    }

                }

            }
            public void StarTimer()
            {
                _timer.Start();
            }
        }
    }


    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 17:25
  • Certo mais um detalhes

    Quando você esta frmGraficoProd2 você quer voltar para o frmGraficoProd1 certo? Se for isso precisa alterar no frmGraficoProd2 o codigo que esta errado também

    public partial class frmGraficoProd2 : Form
    {
       Timer _timer = new Timer();
    
       //frmGraficoProd3 form;
       frmGraficoProd1 form;
    
       public frmGraficoProd2(frmGraficoProd1 finicial)
       {
          InitializeComponent();
    
          //form = new frmGraficoProd3(finicial);
          form = finicial;
    
          _timer.Interval = 10000;
          _timer.Tick += Timer_Tick;
       }
    Se mesmo assim não funcionar e você quiser me mandar o seu projeto eu analiso e te mando as correções! Meu e-mail é arraishapkido@gmail.com


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 17:32
  • Daniel não e isso, o form2 nem abre, ele só da uma piscada na tela,

    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 17:38
  • Você tem condição de me manda o projeto ou posta novamente todo seu código do FORM1 e FORM2


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 17:41
  • Segue os codigos.

    Form1

    public partial class frmGraficoProd1 : Form
        {


            Timer _timer = new Timer();

            frmGraficoProd2 form;
          
            public frmGraficoProd1()
            {
                InitializeComponent();

                form = new frmGraficoProd2(this);

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {


                DateTime dtDe, dtAte;
                DateTime.TryParse(txtDtInicial.Text, out dtDe);
                DateTime.TryParse(txtDtFinal.Text, out dtAte);

                this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text));

                this.reportViewer1.RefreshReport();

            }

            private void frmGraficoVendas_Load(object sender, EventArgs e)
            {

                StarTimer();
            }

            private void btnPesquisar_Click(object sender, EventArgs e)
            {
                this.reportViewer1.RefreshReport();
                _timer.Start();
            }

            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }
       
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (progGrafico.Value > 50000)
                {
                    progGrafico.Value = progGrafico.Value + 2;
                }
                else
                {
                    timer1.Enabled = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        _timer.Stop();
                        form.Visible = true;
                        form.StarTimer();
                    }
                }
            }

            public void StarTimer()
            {
                _timer.Start();
            }
            

        }

    }

    Form2 public partial class frmGraficoProd2 : Form
        {
            Timer _timer = new Timer();

            frmGraficoProd3 form;

            public frmGraficoProd2(frmGraficoProd1 finicial)
            {
                InitializeComponent();

                form = new frmGraficoProd3(finicial);

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {

                  DateTime dtDe, dtAte;
                  DateTime.TryParse(txtDtInicial.Text, out dtDe);
                  DateTime.TryParse(txtDtFinal.Text, out dtAte);

                this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text));

                this.reportViewer1.RefreshReport();
            }
            
            

            private void frmGraficoProd2_Load(object sender, EventArgs e)
            {
                StarTimer();
            }
          

            private void btnPesquisar_Click(object sender, EventArgs e)
            {

                this.reportViewer1.RefreshReport();
                _timer.Start();
            }

            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }
               

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                if(progBarProd2.Value > 50000)
                {
                progBarProd2.Value = progBarProd2.Value + 2;
                }
                else
                {
                    timer2.Enabled = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        _timer.Stop();
                        form.Visible = true;
                        form.StarTimer();
                    }

                }

            }
            public void StarTimer()
            {
                _timer.Start();
            }
        }
    }

    Form3 -> este form ainda esta em construção, então não esta completo como os outros.

     public partial class frmGraficoProd3 : Form
        {
            Timer _timer = new Timer();

            frmGraficoProd1 form;

            public frmGraficoProd3(frmGraficoProd1 finicial)
            {
                InitializeComponent();

                form = finicial;

                _timer.Interval = 10000;
                _timer.Tick += Timer_Tick;
            }

            private void Timer_Tick(object sender, EventArgs e)
            {
     
            }

            private void btnPesquisar_Click(object sender, EventArgs e)
            {
                _timer.Start();
            }
            protected override void OnClosing(CancelEventArgs e)
            {
                _timer.Stop();
                base.OnClosing(e);
            }

            private void timer3_Tick(object sender, EventArgs e)
            {
                if (progGrafico3.Value > 50000)
                {
                    progGrafico3.Value = progGrafico3.Value + 2;
                }
                else
                {
                    timer3.Enabled = false;
                    if (this.Visible == true)
                    {
                        this.Visible = false;
                        _timer.Stop();
                        form.Visible = true;
                        form.StarTimer();
                    }
                }
            }

            public void StarTimer()
            {
                _timer.Start();
            }

        }
    }


    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 17:47
  • Vamos por partes, primeiro vamos fazer o FORM1 abrir o FORM2

    ajuste o código conforme abaixo no FORM1

    private void Timer_Tick(object sender, EventArgs e) { DateTime dtDe, dtAte; DateTime.TryParse(txtDtInicial.Text, out dtDe); DateTime.TryParse(txtDtFinal.Text, out dtAte); this.GaficosVendasTableAdapter.Fill_Gaficos(this.GraficosVendasDataSet.GaficosVendas, dtDe.ToString("yyyyMMdd"), dtAte.ToString("yyyyMMdd"), (txtProduto.Text)); this.reportViewer1.RefreshReport();

    //ADICIONAR ESTAS 2 LINHAS _timer.Interval = 10000; _timer.Tick += timer1_Tick; }



    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br


    quinta-feira, 5 de janeiro de 2017 17:57
  • Ok Linhas adicionadas.

    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 18:04
  • O FORM2 agora esta aparecendo?

    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    www.danielarrais.com.br
    www.scrumbrasil.com.br

    quinta-feira, 5 de janeiro de 2017 18:06
  • Daniel não tem como vc fazer um acesso remoto via teamviwer na minha maquina e vc ve direto os codigos...

    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 18:06
  • Não esta Daniel, este timer e pra atualiza o select do meu banco de dados, este timer atualiza o relatorório.


    JUNIOR GUERREIRO T.I


    quinta-feira, 5 de janeiro de 2017 18:08
  • Então aqui na empresa não consigo fazer pois é bloqueado o teamviwer.

    Ai teriamos que combinar um horário! Se for possivel para você hoje as 22:15 para mim estaria ótimo!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quinta-feira, 5 de janeiro de 2017 18:09
  • Sem problemas pra mim, nesse horario, acho que vc vendo e eu te explicando como funciona meu projeto fica mais facil de vc entender eu acho.

    só que como vamos nos falar vc tem skype?


    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 18:11
  • Tenho sim Skype: dani.arrais

    Já me Add ai! Pois assim que chegar em casa já te chamo!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quinta-feira, 5 de janeiro de 2017 18:14
  • Blz ja te add.


    JUNIOR GUERREIRO T.I

    quinta-feira, 5 de janeiro de 2017 18:16
  • Boa noite Junior Guerreiro

    Após alguns ajustes e conversa pelo Skype enfim conseguimos resolver seu problema! Segue abaixo parte do código que foi realizado!

    //FORM1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.DirectoryServices; namespace WindowsFormsApplication { public partial class Form1 : Form { Form2 form; Timer _timer = new Timer(); public Form1() { InitializeComponent(); form = new Form2(this); _timer.Interval = 10000; _timer.Tick += Timer_Tick; } private void Timer_Tick(object sender, EventArgs e) { MessageBox.Show("sss"); _timer.Interval = 10000; _timer.Tick += timer1_Tick; } private void timer1_Tick(object sender, EventArgs e) { if (this.Visible == true) { this.Visible = false; _timer.Stop(); form.Visible = true; form.StarTimer(); } } protected override void OnClosing(CancelEventArgs e) { _timer.Stop(); base.OnClosing(e); } private void Form1_Load(object sender, EventArgs e) { StarTimer(); } public void StarTimer() { _timer.Start(); } private void button1_Click(object sender, EventArgs e) { txtUsuario.Focus(); } } }

    //FORM2 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication { public partial class Form2 : Form { Form3 form; Timer _timer = new Timer(); public Form2(Form1 fInicial) { InitializeComponent(); form = new Form3(fInicial); _timer.Interval = 10000; _timer.Tick += Timer_Tick; } public void StarTimer() { _timer.Start(); } private void Timer_Tick(object sender, EventArgs e) { if (this.Visible == true) { this.Visible = false; _timer.Stop(); form.Visible = true; form.StarTimer(); } } protected override void OnClosing(CancelEventArgs e) { _timer.Stop(); base.OnClosing(e); } } }

    //FORM3 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication { public partial class Form3 : Form { Form1 form; Timer _timer = new Timer(); public Form3(Form1 fInicial) { InitializeComponent(); form = fInicial; _timer.Interval = 10000; _timer.Tick += Timer_Tick; } private void Timer_Tick(object sender, EventArgs e) { if (this.Visible == true) { this.Visible = false; _timer.Stop(); form.Visible = true; form.StarTimer(); } } protected override void OnClosing(CancelEventArgs e) { _timer.Stop(); base.OnClosing(e); } public void StarTimer() { _timer.Start(); } } }

    Qualquer dúvida estou a disposição!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais


    sexta-feira, 6 de janeiro de 2017 00:51
  • Daniel muito obrigado, resolveu o meu problema...

    JUNIOR GUERREIRO T.I

    sexta-feira, 6 de janeiro de 2017 00:54