2008-11-11 110 views
55

是否有可能在C#WinForms中创建切换按钮?我知道你可以使用CheckBox控件并将其Appearance属性设置为“Button”,但它看起来不正确。我希望它在按下时显得凹陷,不平坦。有什么想法吗?C#WinForms中的ToggleButton

回答

0

我最终重写了OnPaint和OnBackgroundPaint事件,并手动绘制完全按照我需要的按钮。它工作得很好。

+13

你能分享代码吗? – Volatil3 2013-01-28 21:29:07

0

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

8

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

+1

但是,当未选中该框时,这会使其变平。 – 2008-11-11 21:12:09

+0

当在我的机器上检查时,它会被取消选中并沉没(Vista做成Win 2000 - Windows Classic主题)。 – 2008-11-11 21:15:18

+0

你是对的!我不小心把它放在了Popup的风格上。我的错。 – 2008-11-11 21:17:53

2

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

120

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

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

好看又简单 – fnc12 2015-03-23 13:02:29

4

thers是一个简单的方法来创建切换按钮。我在vs2010中测试它。这是完美的。

ToolStripButton具有“Checked”属性和“CheckOnClik”属性。你可以用它来充当切换按钮

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

此外,您还可以创建切换按钮,列表如下:

​​3210
-1

更改复选框外观按钮将给你调整的困难。您无法更改尺寸,因为尺寸取决于文字或图片的尺寸。

你可以试试这个:(首先初始化计数变量设置为1 |诠释计数= 1)

private void settingsBtn_Click(object sender, EventArgs e) 
    { 
     count++; 

     if (count % 2 == 0) 
     { 
      settingsPanel.Show(); 
     } 
     else 
     { 
      settingsPanel.Hide(); 
     } 
    } 

这很简单,但它的工作原理。

警告:使用多于它而不关闭应用的进程的能力时,这将与被偶尔使用(即设置)按钮工作良好,计数的值在INT /长可能过载。 (检查数据类型范围:http://msdn.microsoft.com/en-us/library/s3f49ktz.aspx

好消息:如果你运行的是不用于全天候全一年四季的应用程序,我认为这是有帮助的。重要的是,当应用程序的过程结束,你再次运行它,计数将重置为1.

5

这个怎么样?

假设您引用了System.Windows.Forms。

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

希望这有助于;)

0

的使用,如果命令检查状态,让作为一个切换按钮操作

private void Protection_ON_OFF_Button_Click(object sender, EventArgs e) 
     { 

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

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

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

嗯Jon Tackabury你可以使用MetroUI Framework使用togg le按钮。它提供了许多其他控件,它们看起来像Windows 8一样不同的UI。

您可以尝试至少一次。

如何使用刚刚看到这一点,https://www.youtube.com/watch?v=Ryxew9cgkZA

我希望这是有帮助的。