web-dev-qa-db-fra.com

ToggleButton dans C # WinForms

Est-il possible de créer un bouton bascule dans C # WinForms? Je sais que vous pouvez utiliser un contrôle CheckBox et définir sa propriété Appearance sur "Button", mais cela ne semble pas correct. Je veux qu'il apparaisse affaissé, pas plat, quand on appuie dessus. Des pensées?

59
Jon Tackabury

J'ai fini par surcharger les événements OnPaint et OnBackgroundPaint et dessiner manuellement le bouton exactement comme j'en avais besoin. Cela a plutôt bien fonctionné.

1
Jon Tackabury

Vous pouvez simplement utiliser CheckBox et définir son apparence sur Button:

CheckBox checkBox = new System.Windows.Forms.CheckBox(); 
checkBox.Appearance = System.Windows.Forms.Appearance.Button; 
125
Simon Sabin

Vérifiez la propriété FlatStyle. Si vous le définissez sur "Système", la case à cocher est masquée dans mon environnement.

10
Stanislav Kniazev

Que dis-tu de ça?

En supposant que vous ayez référencé System.Windows.Forms.

var cbtnToggler = new CheckBox();
cbtnToggler.Appearance = Appearance.Button;
cbtnToggler.TextAlign = ContentAlignment.MiddleCenter;
cbtnToggler.MinimumSize = new Size(75, 25); //To prevent shrinkage!

J'espère que cela t'aides ;)

5
JRO

thers est un moyen simple de créer un bouton bascule. Je le teste dans vs2010. C'est parfait.

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

tbtnCross.CheckOnClick = true;

OR

    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;
    }

de plus, vous pouvez créer une liste de boutons bascule 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;

    }
4
legendJSLC

Vous pouvez également envisager le contrôle ToolStripButton si vous ne craignez pas de l'héberger dans un ToolStripContainer. Je pense qu’il peut soutenir nativement des états pressés et non pressés.

2
C. Dragon 76

Ceci est mes codes simples, j'espère que cela peut vous aider

private void button2_Click(object sender, EventArgs e)
    {
        if (button2.Text == "ON")
        {
            panel_light.BackColor = Color.Yellow; //symbolizes light turned on

            button2.Text = "OFF";
        }

        else if (button2.Text == "OFF")
        {
            panel_light.BackColor = Color.Black; //symbolizes light turned off

            button2.Text = "ON";
        }
    }
1
Anthony

Vous pouvez toujours coder votre propre bouton avec des graphiques personnalisés et une PictureBox, même si cela ne correspond pas nécessairement au thème Windows de vos utilisateurs.

0
HanClinto

utiliser if avec commande pour vérifier l'état et laisser fonctionner comme un bouton 

private void Protection_ON_OFF_Button_Click(object sender, EventArgs e)
        {

            if (FolderAddButton.Enabled == true)
            {
                FolderAddButton.Enabled = false;
            }
            else
            {
                FolderAddButton.Enabled = true;
            }
        }
0
H2Five

Eh bien Jon Tackabury, vous pouvez utiliser MetroUI Framework pour utiliser le bouton bascule. Il fournit de nombreux autres contrôles qui ont une apparence différente, tout comme Windows 8.

Vous pouvez l'essayer au moins une fois.

Comment utiliser il suffit de voir ceci, https://www.youtube.com/watch?v=Ryxew9cgkZA

J'espère que ceci est utile.

0
Nitesh