c# - 程序启动时布尔值设置为真,而我没有告诉它
问题描述
对,所以我想在我的程序中添加“保存设置”功能。我将完成我现在设置的整个保存/加载过程的所有步骤。因此,从逻辑上讲,根据bool saveStateToggle
退出程序的时间保存所有设置:
private void exitBtn_Click(object sender, EventArgs e)
{
if(saveStateToggle == false)
{
Application.Exit();
}
else
{
saveSettings();
Application.Exit();
}
}
saveSettings 就是这样:
private void saveSettings()
{
Properties.Settings.Default.onTopToggle = onTopToggle;
Properties.Settings.Default.saveStateToggle = saveStateToggle;
Properties.Settings.Default.debugToggle = debugToggle;
Properties.Settings.Default.min = minTrackbar.Value;
Properties.Settings.Default.max = maxTrackbar.Value;
Properties.Settings.Default.Save();
}
然后,当程序启动时,private void Form1_Load
根据之前保存的设置:
private void Form1_Load(object sender, EventArgs e)
{
if(Properties.Settings.Default.saveStateToggle == true)
{
loadSettings();
}
else
{
loadDefaultSettings();
}
}
loadSettings();
saveSettings();
与镜像相同。所以如果saveSettings();
是Properties.Settings.Default.saveStateToggle = saveStateToggle;
,loadSettings()
就会有这样的:saveStateToggle = Properties.Settings.Default.saveStateToggle;
经过进一步调试,我发现saveStateToggle
确实是false
before Application.Exit();
,但是当我再次启动程序时,它甚至在true
我调用之前就神秘地转动了。loadSettings();
private void Form1_Load
我完全不知所措。我检查了一切,对我来说,一切似乎都是合乎逻辑的。可能saveStateToggle
因为我在运行程序时处于“调试”配置中而变成真的?甚至可以有一个可切换的按钮来启用保存吗?
切换saveStateToggle
真假的按钮:
private void SaveStateToggleBtn_Click(object sender, EventArgs e)
{
if (saveStateToggle == false)
{
saveStateToggle = true;
SaveStateToggleBtn.Text = "SAVESTATE: ON";
}
else
{
saveStateToggle = false;
SaveStateToggleBtn.Text = "SAVESTATE: OFF";
}
}
布尔值在这里定义:
bool saveStateToggle = false;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
解决方案
我认为loadsettings正在改变价值。将saveStateToggle更改为一个属性并在设置器上放置一个断点以查看调用堆栈以及调用它的位置。
private bool _saveStateToggle = false;
public bool SaveStateToggle
{
get { return _saveStateToggle;}
set{ _saveStateToggle = value }
}
推荐阅读
- php - 如何在 PHP 中使用 foreach 循环 MYSQL 月份将月份添加到 +1 个月?
- mongodb - 查找 mongoDB 中是否不存在集合
- html - 如何在网格单元格中垂直居中元素?
- c# - 如何向 Windows 窗体应用程序调用 Web 服务异步方法?
- javascript - 使用 JavaScript 调整 td 或 tr 位置
- python - 为什么是这个值?
- mysql - Grafana - 如何为 Mysql 数据源创建 sql 查询部分变量/宏
- sql - 用户定义数据类型的用户定义规则不起作用
- java - 拉丁字符在发送到服务器时被错误解释
- google-chrome - 适用于 Centos/Linux 的 Google chrome 旧版本