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

C# WinForms节奏游戏跨窗体BGM开关按钮实现问题求助

节奏游戏BGM开关按钮失效问题排查与修复

问题点及修复方案

  • Form1构造函数名称错误
    原代码中构造函数名为SplashScreen(),但类名是Form1,导致播放器初始化代码(设置BGM路径、音量等)完全未执行。需将构造函数名改为与类名一致的Form1()。

  • Form2实例未显示
    Form1_Load方法中仅创建了Form2实例,但未调用Show()或ShowDialog()显示窗口,Form2根本无法打开,按钮点击事件自然无法触发。需添加窗口显示代码。

  • Form2语法错误
    bool BGM = true语句末尾缺少分号,会导致编译失败,程序无法正常运行。补充分号即可。

  • 播放器初始化逻辑问题
    原代码初始化时设置volume = 0并调用Ctlcontrols.stop(),即使取消静音也听不到声音。需调整初始化时的播放状态,比如设置合适音量并调用play()启动BGM。


修正后的代码

Form1代码

public partial class Form1 : Form
{
    public Form1() // 修正构造函数名称
    {
        InitializeComponent();
        
        string path= System.Reflection.Assembly.GetEntryAssembly().Location;
        axWindowsMediaPlayer1.URL = path.Remove(path.Length - 44) + "\\assets\\main.wav";
        axWindowsMediaPlayer1.settings.volume = 50; // 设置合适初始音量
        axWindowsMediaPlayer1.Ctlcontrols.play(); // 初始化时启动BGM
    }
    
    void BGMoff()
    {
        axWindowsMediaPlayer1.settings.mute = true;
    }

    void BGMon()
    {
        axWindowsMediaPlayer1.settings.mute = false;
    }
    
    private void Form1_Load(object sender, EventArgs e)
    {
        Form2 main = new Form2();
        main.BGM_off += BGMoff;
        main.BGM_on += BGMon;
        main.Show(); // 显示Form2窗口
    }
}

Form2代码

public partial class Form2 : Form
{
    public delegate void ClickButton();
    public event ClickButton BGM_off;
    public event ClickButton BGM_on;
    
    bool BGM = true; // 补充分号
    
    public void button4_Click_1(object sender, EventArgs e)
    {
        if (BGM)
        {
            button4.BackgroundImage = Properties.Resources.BGMoff;
            BGM = false;
            BGM_off?.Invoke();
        }
        else
        {
            button4.BackgroundImage = Properties.Resources.BGMon;
            BGM = true;
            BGM_on?.Invoke();
        }
    }
}

内容的提问来源于stack exchange,提问作者Piece - kun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:05:24