none
Mudar cor de fundo do TextBox ao receber valores determinados RRS feed

  • Pergunta

  • Boa tarde amigos.

    Estou precisando alterar a cor de fundo de um textbox ao receber o valor EM DIA  e  VENCIDO que é retornado do banco de dados por linha de código.

    tentei alguns métodos e não consegui.

    Tentei com esse codigo aqui mas nao consigo finalizar.

    this.status_CalibracaoTextBox = " Em dia";
                this.status_CalibracaoTextBox.BackColor = Color.AliceBlue;

    sábado, 21 de maio de 2016 15:35

Respostas

  • Boa tarde Philipe,

    é só atribuir o resultado do seu campo do banco de dados à uma variável do tipo string ou então se o campo já retorna uma string, você pode verificar diretamente nela.

    Exemplo:

    if(variavel == "Em dia")//Variável que você atribuiu o valor, ou trocar pelo retorno do banco
       this.status_CalibracaoTextBox.BackColor = Color.AliceBlue;
    else
       this.status_CalibracaoTextBox.BackColor = Color.Red;
    

    Abraços.

    sábado, 21 de maio de 2016 15:56

Todas as Respostas

  • Philipe, bom dia.

    EM DIA E VENCIDO são strings vindas do seu banco ? 

    se sim, vc poderia joga-las em uma variavel e fazer a consulta assim.

    string VariavelBanco = campo do banco;

    string A = "EM DIA";

    string B = "VENCIDO";

    string C = ""; // vazio ou algum outro texto

    if( A == VariavelBanco )

    this.status_CalibracaoTextBox.BackColor = Color.AliceBlue; }

    else if( B == VariavelBanco)

    {this.status_CalibracaoTextBox.BackColor = Color.Red}

    else if ( C == VariavelBanco)

    {this.status_CalibracaoTextBox.BackColor = Color.Blue;}

    Espero que te ajude.

    Att, Wsti.

    sábado, 21 de maio de 2016 15:46
  • Boa tarde Philipe,

    é só atribuir o resultado do seu campo do banco de dados à uma variável do tipo string ou então se o campo já retorna uma string, você pode verificar diretamente nela.

    Exemplo:

    if(variavel == "Em dia")//Variável que você atribuiu o valor, ou trocar pelo retorno do banco
       this.status_CalibracaoTextBox.BackColor = Color.AliceBlue;
    else
       this.status_CalibracaoTextBox.BackColor = Color.Red;
    

    Abraços.

    sábado, 21 de maio de 2016 15:56
  • Refiz uma parte do Form. Vou usar uma listview para exibir os valores do banco de dados. Utilizei comandos para selecionar os dados e inserir nessa listView. Vou precisa alterar a cor da celula dessa list view que constar os valores EM DIA e VENCIDO.  Sei que a datagridView tem o comando CellStyle  que faz isso. Mas e para a listView, qual comando faria isso ?

    Segue o código que faz o select no banco e insere na listView.

    O que precisaria acrescentar nesse codigo para que ele identifique o valor da celula e modifique a cor da mesma ?

     private void Consultar()
            {
                try
                {
                    //Instancio o DataTable e TableAdapter de Clientes
                    MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["MySQLCon"].ToString());
    
                    //Verifico qual RadioButton o usuário checou e se o txtConsulta não está vazio para chamar o respectivo método
                    if (rbtDescricao.Checked && !String.IsNullOrEmpty(txtConsulta.Text))
                    {
                        //Preencho o TableAdapter com o método FillByNome, passando o DataTable e o txtConsulta como parâmetros
                        string strConn = "SELECT * FROM tb_instrumento WHERE (descricao LIKE '" + txtConsulta.Text + "%')";
    
                        MySqlCommand cmd = new MySqlCommand(strConn, con);
                        con.Open();
                        //Limpo os dados do meu ListView
                        lsvDados.Items.Clear();
    
                        //Uso o laço foreach para percorrer as linhas do ClientesDataTable e carregá-las em meu ListView
                        reader = cmd.ExecuteReader();
                        while (reader.Read())
                        {
                            //Instancio a classe ListViewItem e vou adicionando o item e subitens
                            ListViewItem objListViewItem = new ListViewItem();
                            objListViewItem.Text = reader[0].ToString();
                            objListViewItem.SubItems.Add(reader[1].ToString());
                            objListViewItem.SubItems.Add(reader[2].ToString());
                            objListViewItem.SubItems.Add(reader[3].ToString());
                            objListViewItem.SubItems.Add(reader[4].ToString());
                            objListViewItem.SubItems.Add(reader[5].ToString());
                            objListViewItem.SubItems.Add(reader[6].ToString());
                            objListViewItem.SubItems.Add(reader[7].ToString());
                            objListViewItem.SubItems.Add(reader[8].ToString());
    
                            
                            //No final adiciono os itens em meu ListView, passando como parâmetro o objListViewItem carregado
                            lsvDados.Items.Add(objListViewItem);
    
                        }
                        reader.Close();
                    }

    sábado, 21 de maio de 2016 16:02
  • Consegui avançar, mas agora esta colorindo toda minha list view.

    O argumento nao esta correto

    //Instancio a classe ListViewItem e vou adicionando o item e subitens
                            ListViewItem objListViewItem = new ListViewItem();
                            objListViewItem.Text = reader[0].ToString();
                            objListViewItem.SubItems.Add(reader[1].ToString());
                            objListViewItem.SubItems.Add(reader[2].ToString());
                            objListViewItem.SubItems.Add(reader[3].ToString());
                            objListViewItem.SubItems.Add(reader[4].ToString());
                            objListViewItem.SubItems.Add(reader[5].ToString());
                            objListViewItem.SubItems.Add(reader[6].ToString());
                            objListViewItem.SubItems.Add(reader[7].ToString());
                            objListViewItem.SubItems.Add(reader[8].ToString());
                            if (objListViewItem.SubItems[lsvDados.FocusedItem.Index].(reader[8] == "Em dia"))//Variável que você atribuiu o valor, ou trocar pelo retorno do banco
                                this.lsvDados.Items[lsvDados.FocusedItem.Index].SubItems[8].BackColor = Color.Green;
                            else
                                this.lsvDados.Items[lsvDados.FocusedItem.Index].SubItems[8].BackColor = Color.Red;
                            //No final adiciono os itens em meu ListView, passando como parâmetro o objListViewItem carregado
                            lsvDados.Items.Add(objListViewItem);

    sábado, 21 de maio de 2016 16:39
  • O comando que vc procura é esse ai.

    listView1.Items[0].SubItems[1].BackColor = Color.Red;

    Att, wsti.

    sábado, 21 de maio de 2016 16:47
  • Faz outro foreach com a verificação do em dia, apos add ao listview.
    sábado, 21 de maio de 2016 17:58
  • reader = cmd.ExecuteReader();
                        while (reader.Read())
                            foreach (ListViewItem lvw in lsvDados.Items)
                            {
                                if (lvw.SubItems[8].ToString() == "Vencida")
                                {
                                    lvw.BackColor = Color.Red;
                                    {
                                        //Instancio a classe ListViewItem e vou adicionando o item e subitens
                                        ListViewItem objListViewItem = new ListViewItem();
                                        objListViewItem.Text = reader[0].ToString();
                                        objListViewItem.SubItems.Add(reader[1].ToString());
                                        objListViewItem.SubItems.Add(reader[2].ToString());
                                        objListViewItem.SubItems.Add(reader[3].ToString());
                                        objListViewItem.SubItems.Add(reader[4].ToString());
                                        objListViewItem.SubItems.Add(reader[5].ToString());
                                        objListViewItem.SubItems.Add(reader[6].ToString());
                                        objListViewItem.SubItems.Add(reader[7].ToString());
                                        objListViewItem.SubItems.Add(reader[8].ToString());
    
                                        
                                        lsvDados.Items.Add(objListViewItem);
    
                                    }
                                   
                                    reader.Close();
                                }
    Inseri o foreach antes de carregar os dados no listview, mas mesmo assim não funcionou. Não deixa a celula colorida
    sábado, 21 de maio de 2016 18:20
  • Oi Philipe, Antes de carregar no list não vai funcionar,  testa apos carregar. 
    domingo, 22 de maio de 2016 15:05
  • Fiz das duas maneiras, antes e logo apos carregar.O listview retorna a pesquisa mas a celula não fica da cor que o código diz. Tentei de outras formas mas sempre retorna erro, não tenho mais ideia de como fazer. 

    domingo, 22 de maio de 2016 15:50
  • O codigo abaixo colore todas as linhas da listview.

                          if (lsvDados.SelectedItems.ToString() == "Vencida")
                              this.lsvDados.SelectedItems[8].BackColor = Color.Red;
                          else
                              this.lsvDados.BackColor = Color.White;
                                 
    Isso foi o mais perto que consegui chegar de colorir a celula

    domingo, 22 de maio de 2016 16:13