none
Como bloquear login por um período de tempo C# RRS feed

  • Pergunta

  • Bom dia Pessoal,

    Gostaria da ajuda de vocês.

    Bom, pra início de conversa sou leigo em programação, mas estou estudando e me dedicando.

    É o seguinte estou desenvolvendo um aplicativo QUIZ, toda vez que o usuário vai jogar ele precisar logar no sistema através de um usuário e senha, que por sua vez já está cadastrado no banco de dados.

    O que eu gostaria é o seguinte:

    Que o usuário pudesse jogar apenas uma vez por semana, e que se ele tentasse entrar antes desse período aparece a mensagem de USUÁRIO BLOQUEADO PARA ESSE PERÍODO.

    E que vencendo esse período de uma semana ele fosse liberado para mais uma sessão.

    Como fazer isso?

    Uso:

    Microsoft Visual Studio Express

    Microsoft Sql Compact Editition 4.0

    Desde já agradeço!


    sábado, 13 de maio de 2017 13:39

Respostas

  • Olá, Edson!

       Você pode criar duas colunas na sua tabela de controle chamadas DataUltimoLogin e DataUltimoLogout, por exemplo, e quando o usuário logar verificar se a data atual é maior que a DataUltimoLogout + 7 dias. Sugeri os dois campos para que você também consiga identificar o tempo que o usuário ficou logado, pois se ele apenas entrou e logo saiu do jogo - o período fica a seu critério - não seja considerado como se ele tivesse jogado neste dia, e o jogo seja liberado pra ele.

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:54
    sábado, 13 de maio de 2017 14:11
  • Olá!

       Segue abaixo o seu código com algumas observações que, acredito, podem te ajudar:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlServerCe;
    
    namespace Responda
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
    
            //==============================================================
            //Código pra deixar o form Login Redondo
            //==============================================================
    
                GraphicsPath graPath = new GraphicsPath();
    
                graPath.AddEllipse(new System.Drawing.RectangleF(100, 100, 400, 400));
    
                this.Region = new System.Drawing.Region(graPath);
            }
    
            //==============================================================
            //Select no Banco, buscando usuário e senha no cadastro de Usuário
            //==============================================================
            private void btnEntrar_Click(object sender, EventArgs e) 
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
    			// Na sua tabela tbl_login crie uma coluna chamada DataUltimoLogin e outra chamada DataUltimoLogout
                SqlCeCommand cmd = new SqlCeCommand("select * from tbl_login where Usuario=@Usuario and Senha =@Senha", con);
                cmd.Parameters.AddWithValue("@Usuario", textBox1.Text);
                cmd.Parameters.AddWithValue("@Senha", textBox2.Text);
                SqlCeDataAdapter sda = new SqlCeDataAdapter(cmd);
    
                DataTable dt = new DataTable();
                sda.Fill(dt);	
    			
                con.Open();
                int i = cmd.ExecuteNonQuery();
                con.Close();
                UsuarioLogado.NomeUsuario = textBox1.Text;
    
                if (dt.Rows.Count > 0)
                {
    				DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin
    				DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout
    				
    				//Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto)
    				if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3)
    				{								
    					//Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias				
    					if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7)
    					{
    						throw new Exception("Ainda não passou uma semana desde sua última partida.");
    					}
    				}				
    				
                    this.Hide();
    				//Aqui você escreve o código para atualizar a data do último login
                    carregandoAdm newform = new carregandoAdm();
                    newform.Show();
    
                }
                else if (dt.Rows.Count > 0) 
                {
                    this.Hide();
                    carregando newform = new carregando();
                    newform.Show();
                }
    
                else
                {
    
                    MessageBox.Show("Usuário ou Senha Inválida");
                }  
            }
            //==============================================================
            //Fechar a Aplicação
            //==============================================================
            private void btnCancelar_Click_1(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
            //==============================================================
            //Usar o Enter ao Invés do TAB (Saltar para o Botão ENTRAR)
            //==============================================================
            private void Form1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == 13)
                {
    
                    e.Handled = true;
    
                    SendKeys.Send("{tab}");
    
                }
            }
        }
    }
    
    

    Bom trabalho!

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:54
    quarta-feira, 17 de maio de 2017 12:40
  • Bom dia Rodrigo,

    Viu coloquei alguns comentários aonde não entendi, poderia me ajudar

    //O QUE SIGNIFICA ESSES SINAIS DE INTERROGAÇÕES ?

    DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout //Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto) if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3) { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { throw new Exception("Ainda não passou uma semana desde sua última partida."); } } this.Hide(); //Aqui você escreve o código para atualizar a data do último login

    //AQUI É PRA PEGAR A DATA DO SISTEMA OPERACIONAL E DA UM UPDATE NA COLUNA DataUltimoLogin ?

    carregandoAdm newform = new carregandoAdm(); newform.Show();


    1. Sobre os sinais de interrogação, quando está antes de uma propriedade ou valor (dt.Rows[0]?.ItemArray[x] por exempo) indica que o valor obtido pode ser null. Já o operador ?? define um valor padrão para quando o valor for

    null, evitando erros de referência de objeto quando você não quer/precisa tratar explicitamente. Neste código, por exemplo, se a DataUltimoLogin for NULL, o valor retornado será o de DateTime.MinValue.

    2. Sobre o update na coluna DataUltimoLogin: Sim, isto mesmo. Assim você terá a data de ultimo login sempre atualizada a cada login realizado. A data de ultimo logout (caso você queira utilizar) deverá ser atualizada após cada logout. Se utilizar, você também deverá considerar a possibilidade de o usuário sair sem fechar o jogo corretamente, e o sistema ficar sem esta data. Com isto ele poderia burlar sempre a validação. Por isso seria interessante você alterar esta linha:

    Convert.ToDatetTime(dt.Rows[0]?.ItemArray[y] ?? Convert.ToDatetTime(dt.Rows[0]?.ItemArray[x] ??DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout e x é i índice da coluna DataUltimoLogin
    Com isto, caso não tenha a data do ultimo logout, o sistema vai considerar a data do último login e, se esta também for NULL, pega o DateTime.MinValue. Observe que eu não testei o código, mas deve funcionar.

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    quarta-feira, 17 de maio de 2017 14:29
  • Boa Tarde Rodrigo,

    Desde já agradeço sua atenção e gentileza em me ajudar, muito obrigado.


    Viu vou fazer os testes aqui, qualquer dúvida que eu tiver posso te perguntar?

    Que Deus continue te abençoando.

    Compartilhar conhecimentos ajuda o próximo e a nós mesmos.

    Atenciosamente,

    Edson Goveia

    Obrigado, Edson! Por favor, marque a(s) resposta(s) que te ajudaram a resolver o teu post, para que outras pessoas também possam ser auxiliadas caso tenham dúvida semelhante. Quanto a outras perguntas, crie um novo post - até para não tirar o foco da pergunta deste post -, pois não só eu, mas toda a comunidade do fórum está sempre disposta a ajudar ;).

    Bom trabalho, e que Deus continue a te abençoar também!

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    quinta-feira, 18 de maio de 2017 12:07
  • Bom dia Rodrigo.

    Então, fiz as alterações que me orientou, criei as colunas, criei o código pra atualizar as colunas, está atualizando corretamente.

    Já esse código que me passou está dando um erro:

    if (dt.Rows.Count > 0) {

    //ESSE PRIMEIRO INTERROGAÇÃO ? ESTÁ DANDO UM ERRO DE SINTÁXE, SE EU TIRAR ELE O ERRO PARA, ENTÃO DEIXEI SEM ESSE

    //PRIMEIRO INTERROÇÃO, MAS MESMO ASSIM NÃO FUNCIONOU ESSE CONTROLE DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0] ? .ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0] ? .ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout //Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto) if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3) { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { throw new Exception("Ainda não passou uma semana desde sua última partida."); } } this.Hide(); //Aqui você escreve o código para atualizar a data do último login carregandoAdm newform = new carregandoAdm(); newform.Show(); }

    VIU RODRIGO TE ENTENDO A MARCAR COMO RESPOSTA, E VOU MARCAR SIM, POIS ESTÁ ME AJUDANDO, SÓ NÃO MARQUEI AINDA PORQUE MÃO DEU CERTO. 

    SE PUDER CONTINUAR ME AJUDANDO TE AGRADEÇO.

    ATENCIOSAMENTE,  

    EDSON

    Você pode postar uma imagem do teu visual studio em debug no momento do erro? Vai ajudar na elucidação, já que aqui o código funcionou. Na teoria só daria erro se a linha não existisse, ou se você não substituísse o x e y pelo número do índice.

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    quinta-feira, 18 de maio de 2017 13:51
  • Olá, Edson!

       Tenta assim:

    if (dt.Rows.Count > 0)
    {
        /* Tenta desta maneira. ? e : é um IF em uma linha, onde "?" significa "então" e ":" significa "senão". Provavelmente não funcionou da outra maneira por causa da versão do framework */
    	DateTime dataUltimoLogin = (dt.Rows[0].ItemArray[x] != null) ? Convert.ToDatetTime(dt.Rows[0].ItemArray[x]) : DateTime.MinValue; /* Onde x é o índice da coluna DataUltimoLogin */
    	DateTime dataUltimoLogout = (dt.Rows[0].ItemArray[y]) != null) ? Convert.ToDatetTime(dt.Rows[0].ItemArray[y]) : DateTime.MinValue; /*Onde y é o índice da coluna DataUltimoLogout*/
    
    	/* O código abaixo deveria funcionar. Só não funcionaria se realmente os critérios não fossem atendidos. Confira se a quantidade de minutos e dias atende ao requisito da verificação. Execute testes tirando uma das verificações para ver qual não está sendo atendida, etc... */
    	int quantMinutos = (int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3;
    	int quatDias = (int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays;
    	
    	//Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto)
    	if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3)
    	{								
    		//Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias				
    		if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7)
    		{
    			throw new Exception("Ainda não passou uma semana desde sua última partida.");
    		}
    	}				
    
    	this.Hide();
    	//Aqui você escreve o código para atualizar a data do último login
    	carregandoAdm newform = new carregandoAdm();
    	newform.Show();
    }

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    sexta-feira, 19 de maio de 2017 13:59
  • Bom dia Rodrigo,

    Mais uma vez muito obrigado,


    Trabalho em uma empresa e então sugeri ao diretor um aplicativo (Quiz), pra testar o conhecimento dos funcionários do departamento de tintas imobiliárias e automotivas, pra que desse forma eles se motivassem em aprender cada vez.

    Sou gerente de TI (Servidores Linux, Windows, Infraestrutura, VPNs ...)dessa empresa, porém não trabalho com desenvolvimento, sou leigo, mas tenho alguma noção em C#, então resolvi desenvolver esse aplicativo.

    Voltando ao código que você postou, fiz as alterações que vc propôs, o que eu fiz foi tirar o interrogação e também a primeira linha do if, e ao invés do trow new exception eu coloquei um messagebox, aliás esse trow new eu não conhecia, ele bloqueia o login sim, mas acaba fechando também o sistema, que não é isso que eu quero, quero que bloqueie o login mas continue na tela de login, então usei o messageBox.Show e um método pra retornar a tela de login novamente, não sei se isso pode trazer alguma problema, mas funcionou, fiz os testes aqui com essas alterações, aparentemente deu certo, se por uma caso vc poder melhorar eu agradeço:

    DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0].ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0].ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { MessageBox.Show("Ainda não passou uma semana desde sua última partida.");

    this.Hide();

    Form1 login = new Form1();

    login.Show();

    return;

    } }

    Vou testar essas alterações que vc postou também.

    Rodrigo muito obrigado por sua atenção.

    Atenciosamente,

    Edson

    Não tem muito o que alterar no seu código, a não ser remover as chaves (}) que estão perdidas sem um comando anterior. Não se preocupe tanto em melhorar o seu código neste momento. Primeiramente garanta o funcionamento, aí depois vá refatorando (reescrevendo) o código conforme for se aperfeiçoando.

    Bom trabalho!

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    sexta-feira, 19 de maio de 2017 15:07

Todas as Respostas

  • Olá, Edson!

       Você pode criar duas colunas na sua tabela de controle chamadas DataUltimoLogin e DataUltimoLogout, por exemplo, e quando o usuário logar verificar se a data atual é maior que a DataUltimoLogout + 7 dias. Sugeri os dois campos para que você também consiga identificar o tempo que o usuário ficou logado, pois se ele apenas entrou e logo saiu do jogo - o período fica a seu critério - não seja considerado como se ele tivesse jogado neste dia, e o jogo seja liberado pra ele.

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:54
    sábado, 13 de maio de 2017 14:11
  • Bom dia Rodrigo,

    Agradeço sua gentileza em me ajudar.

    É o seguinte sou leigo em programação e banco de dados, mas estou estudando e me esforçando.

    Será que seria demais pedir pra vc me ajudar com o código?

    Atenciosamente,

    Edson

    segunda-feira, 15 de maio de 2017 14:24
  • Bom dia Rodrigo,

    Agradeço sua gentileza em me ajudar.

    É o seguinte sou leigo em programação e banco de dados, mas estou estudando e me esforçando.

    Será que seria demais pedir pra vc me ajudar com o código?

    Atenciosamente,

    Edson

    Sem problemas! Mas preciso que você aponte onde estão as suas dúvidas na escrita do código, mostrando partes do código que você já tem, por exemplo, e onde exatamente estão estas dúvidas.
    terça-feira, 16 de maio de 2017 11:40
  • Bom dia Rodrigo,

    Obrigado pelo retorno.

    Esse é o código do Form1, que carrega a tela de Login, com dois campos: Usuário e Senha. Dois botões Entrar e Cancelar

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlServerCe;

    namespace Responda
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();

            //==============================================================
            //Código pra deixar o form Login Redondo
            //==============================================================

                GraphicsPath graPath = new GraphicsPath();

                graPath.AddEllipse(new System.Drawing.RectangleF(100, 100, 400, 400));

                this.Region = new System.Drawing.Region(graPath);
            }

            //==============================================================
            //Select no Banco, buscando usuário e senha no cadastro de Usuário
            //==============================================================
            private void btnEntrar_Click(object sender, EventArgs e) 
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cmd = new SqlCeCommand("select * from tbl_login where Usuario=@Usuario and Senha =@Senha", con);
                cmd.Parameters.AddWithValue("@Usuario", textBox1.Text);
                cmd.Parameters.AddWithValue("@Senha", textBox2.Text);
                SqlCeDataAdapter sda = new SqlCeDataAdapter(cmd);

                DataTable dt = new DataTable();
                sda.Fill(dt);
                con.Open();
                int i = cmd.ExecuteNonQuery();
                con.Close();
                UsuarioLogado.NomeUsuario = textBox1.Text;

                if (dt.Rows.Count > 0)
                {
                    this.Hide();
                    carregandoAdm newform = new carregandoAdm();
                    newform.Show();

                }
                else if (dt.Rows.Count > 0) 
                {
                    this.Hide();
                    carregando newform = new carregando();
                    newform.Show();
                }

                else
                {

                    MessageBox.Show("Usuário ou Senha Inválida");
                }  
            }
            //==============================================================
            //Fechar a Aplicação
            //==============================================================
            private void btnCancelar_Click_1(object sender, EventArgs e)
            {
                Application.Exit();
            }

            //==============================================================
            //Usar o Enter ao Invés do TAB (Saltar para o Botão ENTRAR)
            //==============================================================
            private void Form1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == 13)
                {

                    e.Handled = true;

                    SendKeys.Send("{tab}");

                }
            }
        }
    }


    terça-feira, 16 de maio de 2017 13:43
  • Edson

    Pense no seguinte: 

    Crie uma tabela com o ID do usuário, data de cadastro e data do último login.

    O usuário vai se cadastrar e você grava a data no campo de cadastro.

    Quando ele fizer o login, você coloca no campo de login a data e hora.

    Toda vez que o usuário entrar, você verifica a data do último login. Se for mais que uma semana, você redireciona ele para outra tela informando sobre pagamento ou coisa parecida.

    Utilize session para dar logout do usuário caso ele não mexa no sistema por muito tempo. Configure o tempo necessário no arquivo de configuração.



    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    • Sugerido como Resposta Mauricio-Junior terça-feira, 16 de maio de 2017 14:19
    terça-feira, 16 de maio de 2017 14:19
  • Olá!

       Segue abaixo o seu código com algumas observações que, acredito, podem te ajudar:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlServerCe;
    
    namespace Responda
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
    
            //==============================================================
            //Código pra deixar o form Login Redondo
            //==============================================================
    
                GraphicsPath graPath = new GraphicsPath();
    
                graPath.AddEllipse(new System.Drawing.RectangleF(100, 100, 400, 400));
    
                this.Region = new System.Drawing.Region(graPath);
            }
    
            //==============================================================
            //Select no Banco, buscando usuário e senha no cadastro de Usuário
            //==============================================================
            private void btnEntrar_Click(object sender, EventArgs e) 
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
    			// Na sua tabela tbl_login crie uma coluna chamada DataUltimoLogin e outra chamada DataUltimoLogout
                SqlCeCommand cmd = new SqlCeCommand("select * from tbl_login where Usuario=@Usuario and Senha =@Senha", con);
                cmd.Parameters.AddWithValue("@Usuario", textBox1.Text);
                cmd.Parameters.AddWithValue("@Senha", textBox2.Text);
                SqlCeDataAdapter sda = new SqlCeDataAdapter(cmd);
    
                DataTable dt = new DataTable();
                sda.Fill(dt);	
    			
                con.Open();
                int i = cmd.ExecuteNonQuery();
                con.Close();
                UsuarioLogado.NomeUsuario = textBox1.Text;
    
                if (dt.Rows.Count > 0)
                {
    				DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin
    				DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout
    				
    				//Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto)
    				if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3)
    				{								
    					//Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias				
    					if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7)
    					{
    						throw new Exception("Ainda não passou uma semana desde sua última partida.");
    					}
    				}				
    				
                    this.Hide();
    				//Aqui você escreve o código para atualizar a data do último login
                    carregandoAdm newform = new carregandoAdm();
                    newform.Show();
    
                }
                else if (dt.Rows.Count > 0) 
                {
                    this.Hide();
                    carregando newform = new carregando();
                    newform.Show();
                }
    
                else
                {
    
                    MessageBox.Show("Usuário ou Senha Inválida");
                }  
            }
            //==============================================================
            //Fechar a Aplicação
            //==============================================================
            private void btnCancelar_Click_1(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
            //==============================================================
            //Usar o Enter ao Invés do TAB (Saltar para o Botão ENTRAR)
            //==============================================================
            private void Form1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == 13)
                {
    
                    e.Handled = true;
    
                    SendKeys.Send("{tab}");
    
                }
            }
        }
    }
    
    

    Bom trabalho!

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:54
    quarta-feira, 17 de maio de 2017 12:40
  • Bom dia Rodrigo,

    Viu coloquei alguns comentários aonde não entendi, poderia me ajudar

    //O QUE SIGNIFICA ESSES SINAIS DE INTERROGAÇÕES ?

    DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout //Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto) if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3) { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { throw new Exception("Ainda não passou uma semana desde sua última partida."); } } this.Hide(); //Aqui você escreve o código para atualizar a data do último login

    //AQUI É PRA PEGAR A DATA DO SISTEMA OPERACIONAL E DA UM UPDATE NA COLUNA DataUltimoLogin ?

    carregandoAdm newform = new carregandoAdm(); newform.Show();


    • Editado Edson535 quarta-feira, 17 de maio de 2017 14:06
    quarta-feira, 17 de maio de 2017 14:05
  • Bom dia Rodrigo,

    Viu coloquei alguns comentários aonde não entendi, poderia me ajudar

    //O QUE SIGNIFICA ESSES SINAIS DE INTERROGAÇÕES ?

    DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0]?.ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout //Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto) if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3) { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { throw new Exception("Ainda não passou uma semana desde sua última partida."); } } this.Hide(); //Aqui você escreve o código para atualizar a data do último login

    //AQUI É PRA PEGAR A DATA DO SISTEMA OPERACIONAL E DA UM UPDATE NA COLUNA DataUltimoLogin ?

    carregandoAdm newform = new carregandoAdm(); newform.Show();


    1. Sobre os sinais de interrogação, quando está antes de uma propriedade ou valor (dt.Rows[0]?.ItemArray[x] por exempo) indica que o valor obtido pode ser null. Já o operador ?? define um valor padrão para quando o valor for

    null, evitando erros de referência de objeto quando você não quer/precisa tratar explicitamente. Neste código, por exemplo, se a DataUltimoLogin for NULL, o valor retornado será o de DateTime.MinValue.

    2. Sobre o update na coluna DataUltimoLogin: Sim, isto mesmo. Assim você terá a data de ultimo login sempre atualizada a cada login realizado. A data de ultimo logout (caso você queira utilizar) deverá ser atualizada após cada logout. Se utilizar, você também deverá considerar a possibilidade de o usuário sair sem fechar o jogo corretamente, e o sistema ficar sem esta data. Com isto ele poderia burlar sempre a validação. Por isso seria interessante você alterar esta linha:

    Convert.ToDatetTime(dt.Rows[0]?.ItemArray[y] ?? Convert.ToDatetTime(dt.Rows[0]?.ItemArray[x] ??DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout e x é i índice da coluna DataUltimoLogin
    Com isto, caso não tenha a data do ultimo logout, o sistema vai considerar a data do último login e, se esta também for NULL, pega o DateTime.MinValue. Observe que eu não testei o código, mas deve funcionar.

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    quarta-feira, 17 de maio de 2017 14:29
  • Boa Tarde Rodrigo,

    Desde já agradeço sua atenção e gentileza em me ajudar, muito obrigado.


    Viu vou fazer os testes aqui, qualquer dúvida que eu tiver posso te perguntar?

    Que Deus continue te abençoando.

    Compartilhar conhecimentos ajuda o próximo e a nós mesmos.

    Atenciosamente,

    Edson Goveia

    quarta-feira, 17 de maio de 2017 20:22
  • Boa Tarde Rodrigo,

    Desde já agradeço sua atenção e gentileza em me ajudar, muito obrigado.


    Viu vou fazer os testes aqui, qualquer dúvida que eu tiver posso te perguntar?

    Que Deus continue te abençoando.

    Compartilhar conhecimentos ajuda o próximo e a nós mesmos.

    Atenciosamente,

    Edson Goveia

    Obrigado, Edson! Por favor, marque a(s) resposta(s) que te ajudaram a resolver o teu post, para que outras pessoas também possam ser auxiliadas caso tenham dúvida semelhante. Quanto a outras perguntas, crie um novo post - até para não tirar o foco da pergunta deste post -, pois não só eu, mas toda a comunidade do fórum está sempre disposta a ajudar ;).

    Bom trabalho, e que Deus continue a te abençoar também!

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    quinta-feira, 18 de maio de 2017 12:07
  • Bom dia Rodrigo.

    Então, fiz as alterações que me orientou, criei as colunas, criei o código pra atualizar as colunas, está atualizando corretamente.

    Já esse código que me passou está dando um erro:

    if (dt.Rows.Count > 0) {

    //ESSE PRIMEIRO INTERROGAÇÃO ? ESTÁ DANDO UM ERRO DE SINTÁXE, SE EU TIRAR ELE O ERRO PARA, ENTÃO DEIXEI SEM ESSE

    //PRIMEIRO INTERROÇÃO, MAS MESMO ASSIM NÃO FUNCIONOU ESSE CONTROLE DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0] ? .ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0] ? .ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout //Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto) if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3) { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { throw new Exception("Ainda não passou uma semana desde sua última partida."); } } this.Hide(); //Aqui você escreve o código para atualizar a data do último login carregandoAdm newform = new carregandoAdm(); newform.Show(); }

    VIU RODRIGO TE ENTENDO A MARCAR COMO RESPOSTA, E VOU MARCAR SIM, POIS ESTÁ ME AJUDANDO, SÓ NÃO MARQUEI AINDA PORQUE MÃO DEU CERTO. 

    SE PUDER CONTINUAR ME AJUDANDO TE AGRADEÇO.

    ATENCIOSAMENTE,  

    EDSON

    quinta-feira, 18 de maio de 2017 13:33
  • Bom dia Rodrigo.

    Então, fiz as alterações que me orientou, criei as colunas, criei o código pra atualizar as colunas, está atualizando corretamente.

    Já esse código que me passou está dando um erro:

    if (dt.Rows.Count > 0) {

    //ESSE PRIMEIRO INTERROGAÇÃO ? ESTÁ DANDO UM ERRO DE SINTÁXE, SE EU TIRAR ELE O ERRO PARA, ENTÃO DEIXEI SEM ESSE

    //PRIMEIRO INTERROÇÃO, MAS MESMO ASSIM NÃO FUNCIONOU ESSE CONTROLE DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0] ? .ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0] ? .ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout //Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto) if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3) { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { throw new Exception("Ainda não passou uma semana desde sua última partida."); } } this.Hide(); //Aqui você escreve o código para atualizar a data do último login carregandoAdm newform = new carregandoAdm(); newform.Show(); }

    VIU RODRIGO TE ENTENDO A MARCAR COMO RESPOSTA, E VOU MARCAR SIM, POIS ESTÁ ME AJUDANDO, SÓ NÃO MARQUEI AINDA PORQUE MÃO DEU CERTO. 

    SE PUDER CONTINUAR ME AJUDANDO TE AGRADEÇO.

    ATENCIOSAMENTE,  

    EDSON

    Você pode postar uma imagem do teu visual studio em debug no momento do erro? Vai ajudar na elucidação, já que aqui o código funcionou. Na teoria só daria erro se a linha não existisse, ou se você não substituísse o x e y pelo número do índice.

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    quinta-feira, 18 de maio de 2017 13:51
  • Boa Tarde Rodrigo,

    O código com as alterações que vc me orientou:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlServerCe;

    namespace Responda
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                GraphicsPath graPath = new GraphicsPath();

                graPath.AddEllipse(new System.Drawing.RectangleF(100, 100, 400, 400));

                this.Region = new System.Drawing.Region(graPath);
            }

            //==============================================================
            //Select no Banco, buscando usuário e senha no cadastro de Usuário
            //==============================================================
            private void button1_Click(object sender, EventArgs e) 
            {
                SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Users\Terminal5\documents\visual studio 2012\Projects\Responda\Responda\Pontos.sdf;Persist Security Info=True");
                SqlCeCommand cmd = new SqlCeCommand("select * from tbl_login where Usuario=@Usuario and Senha =@Senha", con);
                cmd.Parameters.AddWithValue("@Usuario", textBox1.Text);
                cmd.Parameters.AddWithValue("@Senha", textBox2.Text);
                SqlCeDataAdapter sda = new SqlCeDataAdapter(cmd);

                DataTable dt = new DataTable();
                sda.Fill(dt);
                con.Open();
                int i = cmd.ExecuteNonQuery();
                con.Close();
                UsuarioLogado.NomeUsuario = textBox1.Text;

                if (dt.Rows.Count > 0)
                {
                    DateTime dataUltimoLogin = Convert.ToDateTime(dt.Rows[0]?.ItemArray[8] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin
    DateTime dataUltimoLogout = Convert.ToDateTime(dt.Rows[0]?.ItemArray[9] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout

    //Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto)
    if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3)
    {
    //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias
    if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7)
    {
    throw new Exception("Ainda não passou uma semana desde sua última partida.");
    }
    }

                    this.Hide();
                    carregandoAdm newform = new carregandoAdm();
                    newform.Show();
                    //========================================================================
                    //Atualiza tabela tbl_login, coluna DataUltimoLogin
                    //========================================================================
                    SqlCeCommand cad = new SqlCeCommand("update tbl_login set DataUltimoLogin = @DataUltimoLogin where (Usuario = '" + textBox1.Text + "')", con);

                    SqlCeParameter ultimoLogin = new SqlCeParameter("@DataUltimoLogin", SqlDbType.DateTime);


                    ultimoLogin.Value = lblData.Text;


                    cad.Parameters.Add(ultimoLogin);


                    try
                    {
                        con.Open();
                        cad.ExecuteNonQuery();
                        //MessageBox.Show("Alterado com Sucesso!!");

                    }
                    catch (Exception E)
                    {
                        MessageBox.Show(E.Message);

                    }
                    finally
                    {
                        con.Close();
                    }

                }
                //else if (dt.Rows.Count > 0) 
                //{
                //    this.Hide();
                //    carregando newform = new carregando();
                //    newform.Show();
                //}

                else
                {
                    MessageBox.Show("Usuário ou Senha Inválida");
                }  
            }
            //==============================================================
            //Fechar a Aplicação
            //==============================================================
            private void button2_Click_1(object sender, EventArgs e)
            {
                Application.Exit();
            }

            //==============================================================
            //Usar o Enter ao Invés do TAB (Saltar para o Botão ENTRAR)
            //==============================================================
            private void Form1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == 13)
                {

                    e.Handled = true;

                    SendKeys.Send("{tab}");

                }
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                lblData.Text = (DateTime.Now.ToString());
            }
        }
    }


    • Editado Edson535 quinta-feira, 18 de maio de 2017 22:05
    quinta-feira, 18 de maio de 2017 21:57
  • Rodrigo a parte do código com o erro:
    quinta-feira, 18 de maio de 2017 22:22
  • Os erros em execução:
    quinta-feira, 18 de maio de 2017 22:26
  • Olá, Edson!

       Tenta assim:

    if (dt.Rows.Count > 0)
    {
        /* Tenta desta maneira. ? e : é um IF em uma linha, onde "?" significa "então" e ":" significa "senão". Provavelmente não funcionou da outra maneira por causa da versão do framework */
    	DateTime dataUltimoLogin = (dt.Rows[0].ItemArray[x] != null) ? Convert.ToDatetTime(dt.Rows[0].ItemArray[x]) : DateTime.MinValue; /* Onde x é o índice da coluna DataUltimoLogin */
    	DateTime dataUltimoLogout = (dt.Rows[0].ItemArray[y]) != null) ? Convert.ToDatetTime(dt.Rows[0].ItemArray[y]) : DateTime.MinValue; /*Onde y é o índice da coluna DataUltimoLogout*/
    
    	/* O código abaixo deveria funcionar. Só não funcionaria se realmente os critérios não fossem atendidos. Confira se a quantidade de minutos e dias atende ao requisito da verificação. Execute testes tirando uma das verificações para ver qual não está sendo atendida, etc... */
    	int quantMinutos = (int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3;
    	int quatDias = (int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays;
    	
    	//Verifica se a última vez que o usuário jogou ficou logado um tempo mínimo a considerar (somente se você quiser validar isto)
    	if ((int)dataUltimoLogout.Subtract(dataUltimoLogin).TotalMinutes > 3)
    	{								
    		//Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias				
    		if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7)
    		{
    			throw new Exception("Ainda não passou uma semana desde sua última partida.");
    		}
    	}				
    
    	this.Hide();
    	//Aqui você escreve o código para atualizar a data do último login
    	carregandoAdm newform = new carregandoAdm();
    	newform.Show();
    }

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    sexta-feira, 19 de maio de 2017 13:59
  • Bom dia Rodrigo,

    Mais uma vez muito obrigado,


    Trabalho em uma empresa e então sugeri ao diretor um aplicativo (Quiz), pra testar o conhecimento dos funcionários do departamento de tintas imobiliárias e automotivas, pra que desse forma eles se motivassem em aprender cada vez.

    Sou gerente de TI (Servidores Linux, Windows, Infraestrutura, VPNs ...)dessa empresa, porém não trabalho com desenvolvimento, sou leigo, mas tenho alguma noção em C#, então resolvi desenvolver esse aplicativo.

    Voltando ao código que você postou, fiz as alterações que vc propôs, o que eu fiz foi tirar o interrogação e também a primeira linha do if, e ao invés do trow new exception eu coloquei um messagebox, aliás esse trow new eu não conhecia, ele bloqueia o login sim, mas acaba fechando também o sistema, que não é isso que eu quero, quero que bloqueie o login mas continue na tela de login, então usei o messageBox.Show e um método pra retornar a tela de login novamente, não sei se isso pode trazer alguma problema, mas funcionou, fiz os testes aqui com essas alterações, aparentemente deu certo, se por uma caso vc poder melhorar eu agradeço:

    DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0].ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0].ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { MessageBox.Show("Ainda não passou uma semana desde sua última partida.");

    this.Hide();

    Form1 login = new Form1();

    login.Show();

    return;

    } }

    Vou testar essas alterações que vc postou também.

    Rodrigo muito obrigado por sua atenção.

    Atenciosamente,

    Edson

    sexta-feira, 19 de maio de 2017 14:48
  • Bom dia Rodrigo,

    Mais uma vez muito obrigado,


    Trabalho em uma empresa e então sugeri ao diretor um aplicativo (Quiz), pra testar o conhecimento dos funcionários do departamento de tintas imobiliárias e automotivas, pra que desse forma eles se motivassem em aprender cada vez.

    Sou gerente de TI (Servidores Linux, Windows, Infraestrutura, VPNs ...)dessa empresa, porém não trabalho com desenvolvimento, sou leigo, mas tenho alguma noção em C#, então resolvi desenvolver esse aplicativo.

    Voltando ao código que você postou, fiz as alterações que vc propôs, o que eu fiz foi tirar o interrogação e também a primeira linha do if, e ao invés do trow new exception eu coloquei um messagebox, aliás esse trow new eu não conhecia, ele bloqueia o login sim, mas acaba fechando também o sistema, que não é isso que eu quero, quero que bloqueie o login mas continue na tela de login, então usei o messageBox.Show e um método pra retornar a tela de login novamente, não sei se isso pode trazer alguma problema, mas funcionou, fiz os testes aqui com essas alterações, aparentemente deu certo, se por uma caso vc poder melhorar eu agradeço:

    DateTime dataUltimoLogin = Convert.ToDatetTime(dt.Rows[0].ItemArray[x] ?? DateTime.MinValue); //Onde x é o índice da coluna DataUltimoLogin DateTime dataUltimoLogout = Convert.ToDatetTime(dt.Rows[0].ItemArray[y] ?? DateTime.MinValue); //Onde y é o índice da coluna DataUltimoLogout { //Pega a última data que o usuário saiu do sistema e verifica se já passara 7 dias if ((int)DateTime.Now.Subtract(dataUltimoLogout).TotalDays < 7) { MessageBox.Show("Ainda não passou uma semana desde sua última partida.");

    this.Hide();

    Form1 login = new Form1();

    login.Show();

    return;

    } }

    Vou testar essas alterações que vc postou também.

    Rodrigo muito obrigado por sua atenção.

    Atenciosamente,

    Edson

    Não tem muito o que alterar no seu código, a não ser remover as chaves (}) que estão perdidas sem um comando anterior. Não se preocupe tanto em melhorar o seu código neste momento. Primeiramente garanta o funcionamento, aí depois vá refatorando (reescrevendo) o código conforme for se aperfeiçoando.

    Bom trabalho!

    • Marcado como Resposta Edson535 sexta-feira, 19 de maio de 2017 15:53
    sexta-feira, 19 de maio de 2017 15:07
  • Muito Obrigado por dedicar seu tempo em ajudar o próximo.

    Deus abençoe vc e sua família.

    Estou com dúvidas em outras partes do Quiz.

    Como faço pra postar futuras dúvidas sobre esse Quiz diretamente com voce?

    Por uma caso posso entrar em contato via email, whatsapp, ou até mesmo aqui, mas diretamente com vc?

    Rodrigo vou marcar como resposta.

    sexta-feira, 19 de maio de 2017 15:53
  • Muito Obrigado por dedicar seu tempo em ajudar o próximo.

    Deus abençoe vc e sua família.

    Estou com dúvidas em outras partes do Quiz.

    Como faço pra postar futuras dúvidas sobre esse Quiz diretamente com voce?

    Por uma caso posso entrar em contato via email, whatsapp, ou até mesmo aqui, mas diretamente com vc?

    Rodrigo vou marcar como resposta.

    Edson, muito obrigado pelos votos dirigidos a minha família e a mim. Quanto a um outro contato, peço desculpas, mas tenho por prática não divulgar outro contato aqui. Além do mais, postando as suas perguntas no fórum, as respostas costumam ser muito céleres - até mesmo porque costumo responder no fórum quando as coisas estão mais calmas na empresa. Certo de sua compreensão, desejo sucesso a você, e conte conosco (pessoal do fórum em geral) para te auxiliar. Abraço.
    sexta-feira, 19 de maio de 2017 16:25
  • Rodrigo tem como aqui no fórum eu escolher vc como respondedor das minhas dúvidas?
    sexta-feira, 19 de maio de 2017 19:29
  • Rodrigo tem como aqui no fórum eu escolher vc como respondedor das minhas dúvidas?
    Não sei mesmo, Edson. Mas acho que não tem como fazer isto - até porque não seria interessante, pois se a pessoa que você escolhesse parasse de acompanhar o fórum, você ficaria sem resposta.
    sexta-feira, 19 de maio de 2017 21:00
  • Boa Noite Rodrigo,

    Vou explorar o seu conhecimento mais um pouco, se puder me ajudar agradeço.

    É o seguinte, seguindo nesse projeto do QUIZ:

    Tenho um Form com 5 picturebox com o evento click representando as Cinco (5) fases do Jogo, ST(STARTER), IN(INTERMEDIATE), AD(ADVANCED), EX(EXPERT) E MA(MASTER), esse Form é carregado depois do Login:

    Carregar as fases com as perguntas isso já está pronto e funcionando, o problema é que todas as fases ficam ativas, então o usuário poderia escolher qualquer uma, e não é isso que eu quero.

    O que eu preciso é que toda vez que o usuário jogar a primeira fase ele desabilita a mesma(ex.: fase1.enabled = false;) e habilita a próxima, e assim sucessivamente até terminar as fases.

    Olha só Rodrigo, a lógica eu sei só não estou conseguindo aplicar o código, pensei assim:

    - Criar uma coluna na tabela tbl_login UltimaFase e armazenar os nomes das fases, e assim fazer o controle, mas como disse anteriormente sou leigo em c#, mas estou estudando e me esforçando.

    Desde de já agradeço

    Edson



    • Editado Edson535 terça-feira, 23 de maio de 2017 04:21
    terça-feira, 23 de maio de 2017 01:43
  • Boa Noite Rodrigo,

    Vou explorar o seu conhecimento mais um pouco, se puder me ajudar agradeço.

    É o seguinte, seguindo nesse projeto do QUIZ:

    Tenho um Form com 5 picturebox com o evento click representando as Cinco (5) fases do Jogo, ST(STARTER), IN(INTERMEDIATE), AD(ADVANCED), EX(EXPERT) E MA(MASTER), esse Form é carregado depois do Login:

    Carregar as fases com as perguntas isso já está pronto e funcionando, o problema é que todas as fases ficam ativas, então o usuário poderia escolher qualquer uma, e não é isso que eu quero.

    O que eu preciso é que toda vez que o usuário jogar a primeira fase ele desabilita a mesma(ex.: fase1.enabled = false;) e habilita a próxima, e assim sucessivamente até terminar as fases.

    Olha só Rodrigo, a lógica eu sei só não estou conseguindo aplicar o código, pensei assim:

    - Criar uma coluna na tabela tbl_login UltimaFase e armazenar os nomes das fases, e assim fazer o controle, mas como disse anteriormente sou leigo em c#, mas estou estudando e me esforçando.

    Desde de já agradeço

    Edson



    Olá, Edson. Estou enrolado hoje, com reunião de planejamento, e não poderei dedicar tempo ao fórum agora. Vi que você abriu uma nova pergunta no fórum. Se eu me liberar aqui e ver que sua pergunta não foi atendida, eu pego ela para responder.
    terça-feira, 23 de maio de 2017 15:52
  • Ok, muito obrigado Rodrigo
    terça-feira, 23 de maio de 2017 16:03