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

C#实现点击按钮修改另一类中public Boolean布尔值的方法

实现方案

1. 主窗口新增全局配置实例与加载逻辑

你需要在程序启动时读取本地存储的配置文件,将配置存入全局实例,所有状态修改都基于这个实例操作,避免每次新建实例丢失历史状态。

// 主窗口类中声明全局配置实例
private Data.Settings _currentSettings;

// 主窗口构造函数中补充配置加载逻辑
public MainWindow()
{
    InitializeComponent();
    LoadSettings();
    // 初始化按钮状态和已存储的RepeatTrack值同步
    Loop.Content = _currentSettings.RepeatTrack ? "\uE8EE" : "\uE8ED";
}

// 新增配置加载方法
private void LoadSettings()
{
    var settingsPath = $"{Environment.CurrentDirectory}\\utils\\Settings.json";
    if (File.Exists(settingsPath))
    {
        var json = File.ReadAllText(settingsPath);
        _currentSettings = JsonConvert.DeserializeObject<Data.Settings>(json);
    }
    else
    {
        // 配置文件不存在时初始化默认值
        _currentSettings = new Data.Settings()
        {
            SongVolume = "100",
            RepeatTrack = false
        };
    }
}

注意:如果编译报错找不到File类,需要在文件顶部引入using System.IO;

2. 修改按钮点击事件逻辑

直接修改全局实例的RepeatTrack属性,切换完成后调用保存方法落盘即可:

private void Loop_Click(object sender, RoutedEventArgs e)
{
    // 直接切换布尔值,无需额外判断按钮内容
    _currentSettings.RepeatTrack = !_currentSettings.RepeatTrack;
    // 更新按钮显示状态
    Loop.Content = _currentSettings.RepeatTrack ? "\uE8EE" : "\uE8ED";
    // 保存修改后的配置到本地文件
    SaveSettings();
}

3. 修复原有SaveSettings方法的已知问题

原有方法存在两个错误:

  • 每次新建Settings实例,会丢失全局实例里存储的RepeatTrack值
  • 属性名不匹配:Settings类定义的音量属性为SongVolume,原代码中写的Volume为不存在的属性,会触发编译错误
    修正后的代码:
public void SaveSettings()
{
    var settingsPath = $"{Environment.CurrentDirectory}\\utils\\Settings.json";
    // 直接更新全局实例的音量值,不要新建实例
    _currentSettings.SongVolume = VolumeSlider.Value.ToString();
    string formattedjson = JsonConvert.SerializeObject(_currentSettings, Newtonsoft.Json.Formatting.Indented);
    File.WriteAllText(settingsPath, formattedjson);
}

内容的提问来源于stack exchange,提问作者Gloozzy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:15:05