You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio及C# WinForms中创建切换按钮(Toggle Button)?

嘿,这两个问题我熟,给你一步步讲清楚!

1. 在Visual Studio中用C#创建切换按钮(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事件里处理背景色切换就行:

步骤:

  1. 先确保你的切换按钮(CheckBox)已经设置Appearance = Button
  2. 双击控件(或者在代码里绑定)生成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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:42:40