Итак, я хотел добавить в свою программу функцию сохранения настроек. Я собираюсь пройти все этапы всего процесса сохранения/загрузки, который я настроил прямо сейчас. Так что логично сохранить все настройки в зависимости от 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
перед Application.Exit();
, но оно таинственным образом превращается в true
еще до того, как я вызываю loadSettings();
в private void Form1_Load
, когда снова запускаю программу.
Я в полной растерянности. Я все проверил и мне все кажется логичным. Может ли saveStateToggle
стать истинным, потому что я нахожусь в конфигурации отладки при запуске программы? Возможно ли вообще иметь переключаемую кнопку для включения сохранения?
Кнопка, которая переключает saveStateToggle
true или false:
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)
bool saveStateToggle = true;
определение свойства не показано, что затрудняет ответ. - person Alexei Levenkov   schedule 20.11.2020saveToggleState
, что должно быть ложным. - person Frappy   schedule 20.11.2020public Form1(){InitializeComponent();}
, которое выше Form1_Load. - person Frappy   schedule 20.11.2020saveToggleState
(их не должно быть очень много)? Возможно, существует серия событий, которые непреднамеренно вызывают событие нажатия кнопки для кнопки SaveState, скажем, во время Form_Load?saveToggleState
не может таинственным образом стать правдой; что-то будет настроить его на это. - person Sean Skelly   schedule 20.11.2020Application.Exit();
показывает мне, что это действительноfalse
. Но иногда полезно думать с точки зрения пользователя и не переусердствовать. Я понял, что почти никто не будет использовать его. - person Frappy   schedule 20.11.2020setValues();
, который обновляет все кнопки, а что нет в соответствии с логическими значениями. - person Frappy   schedule 22.11.2020