Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача по C#

Евгения Назарова Ученик (139), на голосовании 5 месяцев назад
Имеется десять флажков. Создать проект, позволяющий сохранять состояние флажков, обнулять и восстанавливать сохраненное состояние.
Мой код почему то либо не сохраняет состояние, либо не восстанавливает,только удаляет. Не понимаю в чём проблема.Помогите пожалуйста.
Код: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("Состояние флажков восстановлено.");
}
}
}
Форма:
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445791) 6 месяцев назад
 // храни состояния в 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;
}
Похожие вопросы