如何在Visual Studio及C# WinForms中创建切换按钮(Toggle Button)?
嘿,这两个问题我熟,给你一步步讲清楚!
Windows Forms里没有直接叫「Toggle Button」的原生控件,但我们可以用CheckBox来完美模拟,步骤超简单:
方法一:可视化设计器操作
- 打开Visual Studio的WinForms项目,从工具箱里拖拽一个
CheckBox到窗体上 - 在右侧属性窗口里,找到
Appearance属性,把它改成Button——瞬间就变成按钮样式的切换控件了 - 可选:调整
Text设置按钮文字,或者清空文字只保留按钮外观;调整Size、Location来适配布局
方法二:纯代码创建
如果需要动态生成切换按钮,在窗体的Load事件或者构造函数里加这段代码:
private void Form1_Load(object sender, EventArgs e) { // 创建切换按钮 CheckBox myToggleBtn = new CheckBox(); myToggleBtn.Appearance = Appearance.Button; myToggleBtn.Text = "点击切换"; myToggleBtn.Size = new Size(120, 40); myToggleBtn.Location = new Point(60, 60); // 绑定状态切换事件(后面第二个问题会用到) myToggleBtn.CheckedChanged += MyToggleBtn_CheckedChanged; this.Controls.Add(myToggleBtn); }
2. 实现切换时背景从红色变透明的效果
既然你之前用普通按钮实现过,换成切换按钮(也就是上面的CheckBox)其实更省心,因为它自带「选中/未选中」的状态管理,不用自己维护变量。直接在CheckedChanged事件里处理背景色切换就行:
步骤:
- 先确保你的切换按钮(CheckBox)已经设置
Appearance = Button - 双击控件(或者在代码里绑定)生成
CheckedChanged事件,然后写逻辑:
private void MyToggleBtn_CheckedChanged(object sender, EventArgs e) { var toggleBtn = sender as CheckBox; if (toggleBtn == null) return; if (toggleBtn.Checked) { // 选中时切换为透明背景 toggleBtn.BackColor = Color.Transparent; // 去掉边框让效果更自然(可选) toggleBtn.FlatStyle = FlatStyle.Flat; toggleBtn.FlatAppearance.BorderSize = 0; } else { // 未选中时切换为红色背景 toggleBtn.BackColor = Color.Red; // 可以还原边框(可选) toggleBtn.FlatStyle = FlatStyle.Standard; } }
小提示:
WinForms里的Transparent是相对父控件的背景,也就是说透明时会显示按钮所在父容器(比如窗体、Panel)的背景。如果想要真正穿透窗体看到桌面,那需要额外设置窗体的Opacity或者用分层窗口,但你的需求应该用上面的方法就足够啦。
这样替换掉之前的普通按钮,就能实现你要的切换效果了!
内容的提问来源于stack exchange,提问作者Skantzy
相关产品推荐
相关产品推荐

