在C#WinForms中的ToggleButton

是否有可能在C#WinForms中创build切换button? 我知道你可以使用一个CheckBox控件,并把它的Appearance属性设置为“Button”,但是看起来不正确。 当按下时,我希望它看起来下沉,不平坦。 有什么想法吗?

你可以使用一个CheckBox并将其外观设置为Button

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

检查FlatStyle属性。 将其设置为“System”会使checkbox陷入我的环境中。

这个怎么样?

假设你有System.Windows.Forms引用。

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

希望这可以帮助 ;)

这是创build切换button的简单方法。 我在vs2010中testing它。 这是完美的。

ToolStripButton具有“Checked”属性和“CheckOnClik”属性。 您可以使用它作为切换button

 tbtnCross.CheckOnClick = true; 

要么

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

另外,你可以像这样创build切换button列表:

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

如果您不介意将其托pipe在ToolStripContainer中,您也可以考虑ToolStripButton控件。 我认为它可以本地支持压力和不压力的状态。

您可以随时使用自定义graphics和PictureBox编写自己的button,但它不一定与用户的Windows主题相匹配。

我结束了覆盖OnPaint和OnBackgroundPaint事件,并手动绘制button就像我需要它。 它工作得很好。

使用if命令检查状态并作为切换button进行操作

 private void Protection_ON_OFF_Button_Click(object sender, EventArgs e) { if (FolderAddButton.Enabled == true) { FolderAddButton.Enabled = false; } else { FolderAddButton.Enabled = true; } } 

那么Jon Tackabury你可以使用MetroUI Framework来使用切换button。 它提供了许多其他的控件,就像Windows 8一样,看起来不同的UI。

你至less可以尝试一次。

如何使用只需看看这个, https://www.youtube.com/watch?v=Ryxew9cgkZA

我希望这是有帮助的。

将CheckBox外观更改为Button会给您调整带来困难。 您无法更改尺寸,因为尺寸取决于文字或图片的大小。

你可以试试这个:(初始化countvariables为1 | int count = 1)

 private void settingsBtn_Click(object sender, EventArgs e) { count++; if (count % 2 == 0) { settingsPanel.Show(); } else { settingsPanel.Hide(); } } 

这很简单,但它的作品。

警告:对于偶尔使用的button(即设置),这可以很好地工作,如果在不closures应用程序的进程的情况下使用超过容量的值, int / long中的count值可能会被重载。 (检查数据types范围: http : //msdn.microsoft.com/en-us/library/s3f49ktz.aspx )

好消息:如果您正在运行的应用程序无意全年无休地使用,我认为这很有帮助。 重要的是,当应用程序的进程结束,你再次运行, 计数将重置为1。

这是我简单的代码,我希望它可以帮助你

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