ใช่แล้ว ฉันต้องการเพิ่มคุณสมบัติการตั้งค่าการบันทึกให้กับโปรแกรมของฉัน ฉันจะทำตามขั้นตอนทั้งหมดของกระบวนการบันทึก/การโหลดทั้งหมดที่ฉันได้ตั้งค่าไว้ตอนนี้ ตามตรรกะแล้ว ให้บันทึกการตั้งค่าทั้งหมดตาม 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
อาจกลายเป็นจริงได้หรือไม่เพราะฉันอยู่ในการกำหนดค่า Debug เมื่อรันโปรแกรม เป็นไปได้ไหมที่จะมีปุ่มสลับเพื่อเปิดใช้งานการบันทึก?
ปุ่มที่สลับ 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)
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