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?
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é.
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;
Vérifiez la propriété FlatStyle. Si vous le définissez sur "Système", la case à cocher est masquée dans mon environnement.
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 ;)
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;
}
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.
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";
}
}
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.
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;
}
}
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.