85 votes

ToggleButton en C#, WinForms

Est-il possible de créer un bouton bascule en C#, WinForms? Je sais que vous pouvez utiliser un contrôle de Case à cocher et de définir l'Apparence de la propriété "Bouton", mais il ne regarde pas à droite. Je veux qu'il apparaisse dans les orbites, ce n'est pas plat, lorsqu'il est pressé. Toutes les pensées?

169voto

Simon Sabin Points 671

Vous pouvez simplement utiliser une case à cocher et définir son apparence de Bouton

Grâce à http://www.osix.net/modules/article/?id=797 pour souligner ce point

10voto

Stanislav Kniazev Points 2587

Vérifier FlatStyle de la propriété. Le paramètre "Système" rend la case enfoncés dans mon environnement.

5voto

legendJSLC Points 76

autres est un moyen simple de créer le bouton à bascule. Je l'ai tester dans vs2010. C'est l'idéal.

ToolStripButton a un "Extrait" de la propriété et un "CheckOnClik de la propriété". Vous pouvez l'utiliser pour agir comme un bouton à bascule

tbtnCross.CheckOnClick = true;

OU

    tbtnCross.CheckOnClick = false;
    tbtnCross.Click += new EventHandler(tbtnCross_Click);
    .....

    void tbtnCross_Click(object sender, EventArgs e)
    {
        ToolStripButton target = sender as ToolStripButton;
        target.Checked = !target.Checked;
    }

aussi, Vous pouvez créer un bouton bascule liste comme ceci:

        private void Form1_Load(object sender, EventArgs e)
    {
        arrToolView[0] = tbtnCross;
        arrToolView[1] = tbtnLongtitude;
        arrToolView[2] = tbtnTerrain;
        arrToolView[3] = tbtnResult;
        for (int i = 0; i<arrToolView.Length; i++)
        {
            arrToolView[i].CheckOnClick = false;
            arrToolView[i].Click += new EventHandler(tbtnView_Click);
        }
        InitTree();
    }

    void tbtnView_Click(object sender, EventArgs e)
    {
        ToolStripButton target = sender as ToolStripButton;
        if (target.Checked) return;
        foreach (ToolStripButton btn in arrToolView)
        {
                btn.Checked = false;
                //btn.CheckState = CheckState.Unchecked;
        }
        target.Checked = true;
        target.CheckState = CheckState.Checked;

    }

5voto

C. Dragon 76 Points 5066

Vous pouvez également envisager de la ToolStripButton de contrôle si vous n'avez pas l'esprit d'hébergement dans un ToolStripContainer. Je pense qu'il peut supporter nativement pressée et non pressée et non cuite unis.

0voto

Jon Tackabury Points 10999

J'ai fini par substitution de la OnPaint et OnBackgroundPaint événements et manuellement dessin le bouton exactement comme j'en ai besoin. Il a fonctionné assez bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X