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