Feedback

C# - Labels als Buttons verwenden

Veröffentlicht von am 07.06.2013
(2 Bewertungen)
Ich benutze immer wider lieber Labels als Buttons, weil ich da die Farbe frei wählen kann ohne dass, wie es bei den Buttons ist, nervige Ränder bleiben

Mit dieser Klasse kann man dies erleichtern.
Man übergibt Farbwerte für Normal und Hover bzw. MouseMove. (>> Farbverläufe) Die Ereignisse werden dann entsprechend angepasst.
myLabel.ToButton(Color.FromArgb(224, 224, 224), Color.FromArgb(189, 189, 189), Color.FromArgb(253, 230, 205), Color.FromArgb(255, 207, 105));


Zum "De-Buttieren" ;D einfach:
LabelToButton.LbColors.Remove(myLabel);


PS: Komments sind mir lieber als einfach par Sterne, weil ich ja dann nicht weiß woran es liegt und so.. ;D
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace MathematicsDELUXE
{
    public static class LabelToButton
    {
        public static Dictionary<Label, Color[]> LbColors = new Dictionary<Label, Color[]>();
        public static void ToButton(this Label l, Color BGTop, Color BGBottom, Color BGTopHover, Color BGBottomHover)
        {
            l.GradientBackground(BGTop, BGBottom, true);
            l.MouseMove += new MouseEventHandler(Move);
            l.MouseLeave += new EventHandler(Leave);
            Color[] cols = {BGTop, BGBottom, BGTopHover, BGBottomHover};
            LbColors.Add(l, cols);
        }

        private static void Move(object sender, MouseEventArgs e)
        {
            try
            {
                Label l = (Label)sender;
                l.GradientBackground(LbColors[l][2], LbColors[l][3], true);
            }
            catch
            {
            }
        }

        private static void Leave(object sender, EventArgs e)
        {
            try
            {
                Label l = (Label)sender;
                l.GradientBackground(LbColors[l][0], LbColors[l][1], true);
            }
            catch
            {
            }
        }

        public static void GradientBackground(this Control c, Color col1, Color col2, bool vertical)
        {
            Bitmap b;
            if (vertical)
            {
                b = new Bitmap(1, 2);
                b.SetPixel(0, 0, col1);
                b.SetPixel(0, 1, col2);
            }
            else
            {
                b = new Bitmap(2, 1);
                b.SetPixel(0, 0, col1);
                b.SetPixel(1, 0, col2);
            }
            c.BackgroundImageLayout = ImageLayout.Stretch;
            c.BackgroundImage = b;
        }
    }
}
Abgelegt unter Label, Leave, Button, Move.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!