none
Geral RRS feed

  • Pergunta

  • Boa tarde Pessoal,

    Vê se vocês podem me ajudar. Eu tenho Alguns butões em meu sistema que tem algumas caracteristicas. Esses butões se repetem em vários dos meus programas. Hoje em cada programa eu defino essas caracteristicas. Então eu repito essas caracteristicas em todos os programas. Existe alguma forma de eu definir essas caracteristicas em uma classe ou um DLL e chamá-las quando adicionar esse butão? Vou dar uma exemplo: O meu butão altera, quando eu o aciono eu mudo o seu tamanho e a sua cor. Hoje quando eu o aciono eu tenho que definir a mesma rotina, então eu tenho essa definição em praticamente 40 programas. Tem como melhorar e como fazer, pois eu não estou conseguindo.

    //------------ Botão Alterar Mudando a Cor quando Entro no Botão ------------------
            private void btnAltera_Enter(object sender, EventArgs e)
            {   btnAltera.Width = 90; btnAltera.Height = 40;
                btnAltera.ForeColor = Color.Red; btnAltera.BackColor = Color.Black;
                btnAltera.BringToFront();       }
            //------------ Botão Alterar Mudando a Cor quando Sai do Botão ------------------
            private void btnAltera_Leave(object sender, EventArgs e)
            {   btnAltera.Width = 80; btnAltera.Height = 30;
                btnAltera.ForeColor = Color.Black; btnAltera.BackColor = Color.WhiteSmoke;
                btnAltera.SendToBack();         }
    

     Garibaldo
    sábado, 11 de novembro de 2017 15:42

Respostas

  • Vamos imaginar o seguinte cenário básico:

    Uma Classe Chamada Help:

    using System;
    using System.Drawing;  
    using System.Windows.Forms;
    
    namespace Msdn
    {
        public class Help
        {
            public static void btnPersonalizado_Enter(object sender, EventArgs e)
            {
                ((Button)sender).Width = 90;
                ((Button)sender).Height = 40;
                ((Button)sender).ForeColor = Color.Red;
                ((Button)sender).BackColor = Color.Black;
                ((Button)sender).BringToFront();
            }
    
            public static void btnPersonalizado_Leave(object sender, EventArgs e)
            {
                ((Button)sender).Width = 80;
                ((Button)sender).Height = 30;
                ((Button)sender).ForeColor = Color.Black;
                ((Button)sender).BackColor = Color.WhiteSmoke;
                ((Button)sender).SendToBack();
            }
    
        }
    }
    

    E no evento Load do Form setar as propriedades desejadas (Pode ser no construtor, estou apenas simplificando)

    using System;
    using System.Windows.Forms;
    
    namespace Msdn
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                // button1
                button1.Enter += Help.btnPersonalizado_Enter;
                button1.Leave += Help.btnPersonalizado_Leave;
    
                // button2
                button2.Enter += Help.btnPersonalizado_Enter;
                button2.Leave += Help.btnPersonalizado_Leave;
    
                // button3
                button3.Enter += Help.btnPersonalizado_Enter;
                button3.Leave += Help.btnPersonalizado_Leave;
            }
        }
    }

    Acredito que era isso que precisava!


    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    sexta-feira, 17 de novembro de 2017 20:40

Todas as Respostas

  • Olá Garibalde,

    Tem sim é bem simples.. você pode criar essas chamadas para serem consumidas em todas suas aplicações, aceitando o comportamento personalizado!

    private void btnPersonalizado_Enter(object sender, EventArgs e)
    {
        ((Button)sender).Width = 90;
        ((Button)sender).Height = 40;
        ((Button)sender).ForeColor = Color.Red;
        ((Button)sender).BackColor = Color.Black;
        ((Button)sender).BringToFront();
    }
    
    private void btnPersonalizado_Leave(object sender, EventArgs e)
    {
        ((Button)sender).Width = 80;
        ((Button)sender).Height = 30;
        ((Button)sender).ForeColor = Color.Black;
        ((Button)sender).BackColor = Color.WhiteSmoke;
        ((Button)sender).SendToBack();
    }
    Espero ter ajudado!


    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    sábado, 11 de novembro de 2017 16:07
  • Rafael,

    Onde eu as crio e como faço para chamá-las?

    Garibaldo

    sábado, 11 de novembro de 2017 16:13
  • Boa tarde Pessoal,

    Vê se vocês podem me ajudar. Eu tenho Alguns butões em meu sistema que tem algumas caracteristicas. Esses butões se repetem em vários dos meus programas. Hoje em cada programa eu defino essas caracteristicas. Então eu repito essas caracteristicas em todos os programas. Existe alguma forma de eu definir essas caracteristicas em uma classe ou um DLL e chamá-las quando adicionar esse butão? Vou dar uma exemplo: O meu butão altera, quando eu o aciono eu mudo o seu tamanho e a sua cor. Hoje quando eu o aciono eu tenho que definir a mesma rotina, então eu tenho essa definição em praticamente 40 programas. Tem como melhorar e como fazer, pois eu não estou conseguindo.

    Garibaldo

    domingo, 12 de novembro de 2017 18:21
  • Você pode criar Custom Controls (https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/creating-a-wf-control-design-time-features), User Control (https://msdn.microsoft.com/en-us/library/aa302342.aspx?f=255&MSPPError=-2147217396) ou simplesmente uma Class Library com uma classe e método que serão invocados no click destes botões.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    domingo, 12 de novembro de 2017 20:55
  • Vamos imaginar o seguinte cenário básico:

    Uma Classe Chamada Help:

    using System;
    using System.Drawing;  
    using System.Windows.Forms;
    
    namespace Msdn
    {
        public class Help
        {
            public static void btnPersonalizado_Enter(object sender, EventArgs e)
            {
                ((Button)sender).Width = 90;
                ((Button)sender).Height = 40;
                ((Button)sender).ForeColor = Color.Red;
                ((Button)sender).BackColor = Color.Black;
                ((Button)sender).BringToFront();
            }
    
            public static void btnPersonalizado_Leave(object sender, EventArgs e)
            {
                ((Button)sender).Width = 80;
                ((Button)sender).Height = 30;
                ((Button)sender).ForeColor = Color.Black;
                ((Button)sender).BackColor = Color.WhiteSmoke;
                ((Button)sender).SendToBack();
            }
    
        }
    }
    

    E no evento Load do Form setar as propriedades desejadas (Pode ser no construtor, estou apenas simplificando)

    using System;
    using System.Windows.Forms;
    
    namespace Msdn
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                // button1
                button1.Enter += Help.btnPersonalizado_Enter;
                button1.Leave += Help.btnPersonalizado_Leave;
    
                // button2
                button2.Enter += Help.btnPersonalizado_Enter;
                button2.Leave += Help.btnPersonalizado_Leave;
    
                // button3
                button3.Enter += Help.btnPersonalizado_Enter;
                button3.Leave += Help.btnPersonalizado_Leave;
            }
        }
    }

    Acredito que era isso que precisava!


    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    sexta-feira, 17 de novembro de 2017 20:40
  • Valeu Rafael pela ajuda, funcionou certinho como eu queria.

    Garibaldo

    sexta-feira, 17 de novembro de 2017 21:22