none
Iniciante em .NET RRS feed

  • Pergunta

  • Olá Pessoal.

    Sou nova em .NET. Trabalhei com vb6 durante muitos anos. 

    Preciso criar um método que faça o seguinte:

    Quando um textbox recebe o foco quero alterar a cor do BackColor para amarelo e quando perde o foco, voltar para branco.

    Esta rotina será usada em varias paginas do sistema que possuem textbox. Como faço isto? Tenho que criar uma classe?

    No vb6, eu fazia da seguinte forma: Eu tinha um modulo.bas e dentro dele tinha varios metodos e eles eram chamados nas paginas. É o mesmo em Silverlight?

    Obrigada

    Min


    • Editado Min_T segunda-feira, 2 de abril de 2012 19:39
    segunda-feira, 2 de abril de 2012 19:21

Respostas

  • Amigo,

    Da maneira que voce fez não deixa de estar certo. Porem no teu caso como é coisa simples somente mudar cores basta vc criar uma classe estatica que no vb6 seria um modulo se nao me engano. e ficaria mais ou menos assim.

    Classe estatica

            public static class Util
            {
                public static void Focaliza(Control _control, bool _valor)
                {
                    Color color = (_valor) ? Color.FromArgb(255, 255, 255, 204) : Colors.White;
                    _control.Background = new SolidColorBrush(color);
                    _control.Foreground = new SolidColorBrush(Colors.Black);
                }
            }

    Chamada nos eventos

            private void txtOrganizacao_GotFocus(object sender, RoutedEventArgs e)
            {
                Util.Focaliza((TextBox)sender, true);
            }
    
            private void txtOrganizacao_LostFocus(object sender, RoutedEventArgs e)
            {
                Util.Focaliza((TextBox)sender, false);
            }


    se a resposta foi útil, classifique :)
    ate mais,

    Rodrigo Soria

    • Marcado como Resposta Min_T segunda-feira, 2 de abril de 2012 22:20
    segunda-feira, 2 de abril de 2012 21:13

Todas as Respostas

  • Min, boa tarde, você está trabalhando em uma aplicação web ou desktop ? 

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    segunda-feira, 2 de abril de 2012 19:27
    Moderador
  • Olá Olavo.

    Web. Será em Silverlight.

    Lembre-se que usarei em varias paginas. Além deste método, eu devo criar vários outros que também serão usado em varias paginas. 

    Att.

    Min

    segunda-feira, 2 de abril de 2012 19:38
  • Olá, você vai precisar de dois eventos do TexBox, o evento Leave (quando o TextBox perde o foco) e o evento Enter (quando o TextBox ganha o foco), segue o exemplo de código:

    'Quando perde o foco
        Private Sub TextBox1_Leave(sender As System.Object, e As System.EventArgs) Handles TextBox1.Leave
            TextBox1.BackColor = Color.Yellow
        End Sub
    
        'Quando recebe o foco
        Private Sub TextBox1_Enter(sender As System.Object, e As System.EventArgs) Handles TextBox1.Enter
            TextBox1.BackColor = Color.White
        End Sub

    Não esqueça de colocar as referências para os métodos Leave e Enter nas propriedades do TextBox.

    Espero ter ajudado, Thiago Coelho.


    thiagokoelho

    segunda-feira, 2 de abril de 2012 20:18
  • Olá Thiago.

    Eu fiz assim. Por favor, veja se está certo.  Tenho algumas duvidas quanto a orientação a objetos. 

    Criei uma classe util.cs. Neste arquivo eu inseri a classe FocalizaCampo. Nesta rotina ele altera a cor para qualquer textbox porque estou passando como parametro o Controle. Veja a classe como ficou:

    using System;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    
    namespace Teste
    {
        public class FocalizaCampo
        {
            public void Focaliza(Control container, bool _valor)
            {
                if (_valor == true)
                {                
                    container.Background = new SolidColorBrush(Color.FromArgb(255, 255, 255, 204));
                    container.Foreground = new SolidColorBrush(Colors.Black);
                }
                else
                {
                    container.Background = new SolidColorBrush(Colors.White);
                    container.Foreground = new SolidColorBrush(Colors.Black);
                }
            }
        }
    }
    

    No GotFocus, eu chamo a classe:

    private void txtOrganizacao_GotFocus(object sender, RoutedEventArgs e)
            {
                FocalizaCampo focaliza = new FocalizaCampo();
                focaliza.Focaliza(txtOrganizacao, true);
            }

    No LostFocus:

    private void txtOrganizacao_LostFocus(object sender, RoutedEventArgs e)
            {  
                FocalizaCampo focaliza = new FocalizaCampo();
                focaliza.Focaliza(txtOrganizacao, false);
            }

    Está funcionando certinho, mas como tenho duvida sobre a OO, é correto fazer isto? 

    Neste arquivo Util.cs, pretendo criar outras classes publicas. Isto é uma boa prática de programação?

    Att.

    Min

    segunda-feira, 2 de abril de 2012 20:51
  • Amigo,

    Da maneira que voce fez não deixa de estar certo. Porem no teu caso como é coisa simples somente mudar cores basta vc criar uma classe estatica que no vb6 seria um modulo se nao me engano. e ficaria mais ou menos assim.

    Classe estatica

            public static class Util
            {
                public static void Focaliza(Control _control, bool _valor)
                {
                    Color color = (_valor) ? Color.FromArgb(255, 255, 255, 204) : Colors.White;
                    _control.Background = new SolidColorBrush(color);
                    _control.Foreground = new SolidColorBrush(Colors.Black);
                }
            }

    Chamada nos eventos

            private void txtOrganizacao_GotFocus(object sender, RoutedEventArgs e)
            {
                Util.Focaliza((TextBox)sender, true);
            }
    
            private void txtOrganizacao_LostFocus(object sender, RoutedEventArgs e)
            {
                Util.Focaliza((TextBox)sender, false);
            }


    se a resposta foi útil, classifique :)
    ate mais,

    Rodrigo Soria

    • Marcado como Resposta Min_T segunda-feira, 2 de abril de 2012 22:20
    segunda-feira, 2 de abril de 2012 21:13
  • Muito Obrigada!!
    segunda-feira, 2 de abril de 2012 22:20