Как сохранить элементы ListBox в файл и получить их обратно? - PullRequest
1 голос
/ 12 января 2012

Я работаю над сохранением последних использованных настроек, а затем, когда программа начинает их восстанавливать Все отлично работает, но я просто не знаю, как обращаться с элементами ListBox.

Следует отметить, что я уже использую один разделитель для хранения своих настроек. Я очень запутался, когда имею дело с этой проблемой.

Вот как я храню свои настройки:

private void btnStart_Click(object sender, EventArgs e)
{
    int interval = 0;
    int plusMinus = 0;
    int pause = 0;
    int delay = 0;
    int randomLine = 0;

    if (cbPause.Checked == true) pause = 1;
    if (cbDelay.Checked == true) delay = 1;
    if (cbRandomLine.Checked == true) randomLine = 1;
    interval = int.Parse(nudInterval.Value.ToString());
    plusMinus = int.Parse(nudPlusMinus.Value.ToString());

    lastUsed.Text = 
        interval + splitString + 
        plusMinus + splitString + 
        pause + splitString + 
        delay + splitString + 
        randomLine;

    if (nudPlusMinus.Value == 0)
    {
        tmrInterval.Interval = int.Parse(nudInterval.Value.ToString());
    }
    else
    {
        Random random = new Random();
        tmrInterval.Interval = random.Next(int.Parse(nudInterval.Value.ToString()) - int.Parse(nudPlusMinus.Value.ToString()), int.Parse(nudInterval.Value.ToString()) + int.Parse(nudPlusMinus.Value.ToString()));
    }

    WhenStarted();

    tmrInterval.Start();
}

Вот как я получаю их при запуске программы:

public AutoTyper()
{
    InitializeComponent();

    tmrInterval.Tick += new EventHandler(Interval);
    tmrDelay.Tick += new EventHandler(Delay);
    tmrSpace.Tick += new EventHandler(Space);

    lbMessage.SelectedIndexChanged += new EventHandler(lbMessage_SelectedIndexChanged);
    txtMessage.TextChanged += new EventHandler(txtMessage_TextChanged);

    SetInterval();

    if (!lastUsed.EmptyFile())
    {
        string[] allSettings = lastUsed.Text.Split(splitChar, StringSplitOptions.None);
        int settingCount = 0;
        int settingNumber = 0;

        foreach (string setting in allSettings) settingNumber++;

        if (settingNumber == 5)
        {
            foreach (string setting in allSettings)
            {
                settingCount++;

                if (settingCount == 1) nudInterval.Value = int.Parse(setting);
                else if (settingCount == 2) nudPlusMinus.Value = int.Parse(setting);
                else if (settingCount == 3) { if (setting == "1") cbPause.Checked = true; }
                else if (settingCount == 4) { if (setting == "1") cbDelay.Checked = true; }
                else if (settingCount == 5) { if (setting == "1") cbRandomLine.Checked = true; }
            }
        }
    }
}

1 Ответ

3 голосов
/ 12 января 2012

Просто получить / установить SelectedIndex после добавления всех значений (если это не происходит уже во время разработки).

Но в общем, я бы переписал эту настройку обработки. Вы должны сохранить свои настройки, используя ключи и значения. В противном случае вы столкнетесь с проблемой тонны, если захотите добавить, удалить или изменить порядок некоторых настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...