// храни состояния в int:
private int savedState = 0;
...
private void SaveState()
{
savedState = 0;
foreach (CheckBox checkbox in Controls.OfType())
savedState |= (checkbox.Checked? 1: 0) << int.Parse(checkbox.Text);
}
private void RestoreState()
{
foreach (CheckBox checkbox in Controls.OfType())
checkbox.Checked = savedState & (1 << int.Parse(checkbox.Text)) != 0;
}
Мой код почему то либо не сохраняет состояние, либо не восстанавливает,только удаляет. Не понимаю в чём проблема.Помогите пожалуйста.
Код:namespace _10_флажков
{
public partial class Form1 : Form
{
private List<bool> savedState = new List<bool>();
public Form1()
{
InitializeComponent();
SaveState();
}
private void SaveState()
{
savedState.Clear();
foreach (CheckBox checkbox in Controls.OfType<CheckBox>())
{
savedState.Add(checkbox.Checked);
}
}
private void ResetState()
{
foreach (CheckBox checkbox in Controls.OfType<CheckBox>())
{
checkbox.Checked = false;
}
SaveState();
}
private void RestoreState()
{
if (savedState.Count == 0)
{
MessageBox.Show("Нет сохраненного состояния.");
return;
}
for (int i = 0; i < Controls.OfType<CheckBox>().Count(); i++)
{
Controls.OfType<CheckBox>().ElementAt(i).Checked = savedState[i];
}
}
private void buttonSave_Click(object sender, EventArgs e)
{
SaveState();
MessageBox.Show("Состояние флажков сохранено.");
}
private void buttonReset_Click(object sender, EventArgs e)
{
ResetState();
MessageBox.Show("Состояние флажков обнулено.");
}
private void buttonRestore_Click(object sender, EventArgs e)
{
RestoreState();
MessageBox.Show("Состояние флажков восстановлено.");
}
}
}
Форма: