c # Сохранить панель макета потока

1

Я программирую в Visual Studio 2013, С# winform. Я пытаюсь сделать что-то вроде Steam Library, но я не знаю, как сохранить FlowLayoutPanel, который у меня есть в tab1 (Library).

Вот как выглядит (Библиотека)

Вот как это выглядит (добавление новой игры)

Вот как это выглядит (удаление новой игры): http://oi62.tinypic.com/2uzfc3k.jpg

(извините, им не удалось добавить изображения и более 2 ссылок)

Вот мой код:

    private void btnTest_Click_1(object sender, EventArgs e)
    {
        if (textBox1.Text != "")
             {
            if (textBox2.Text != "")
                {
                    if (textBox3.Text != "")
                        {
                            Button btn = sender as Button;
                            Button btnNew = new Button();
                            btnNew.Text = "";
                            btnNew.Height = 108;
                            btnNew.Width = 230;

                            btnNew.Name = textBox3.Text;
                            comboBox1.Items.Add(textBox3.Text);

                            btnNew.BackgroundImage = new Bitmap(textBox1.Text);
                            btnNew.BackgroundImageLayout = ImageLayout.Stretch;
                            btnNew.FlatStyle = FlatStyle.Flat;
                            flpContainer.Controls.Add(btnNew);
                            btnNew.Click += btnNew_Click;
                            btnNew.Tag = textBox2.Text;
                            counter1+=+1;
                            label1.Text = counter1.ToString();
                            System.Windows.Forms.MessageBox.Show("Game " + textBox3.Text + " was successfully added to library!");
                            textBox1.Text = "";
                            textBox2.Text = "";
                            textBox3.Text = "";
                        }
                    else if (textBox3.Text == "")
                        {
                            MessageBox.Show("You didn't wrote name!");
                        }
                    }
            else if (textBox2.Text == "")
                {
                System.Windows.Forms.MessageBox.Show("You didn't choose exe file!");
                }
             }
        else if (textBox1.Text == "")
            {
                System.Windows.Forms.MessageBox.Show("You didn't choose image!");
            }
    }

    private void btnNew_Click(object sender, EventArgs e)
        {
            Button clickedButton = (Button)sender;
            Process.Start((string)clickedButton.Tag); 
        }

    private void ZvolitObrazek_Click(object sender, EventArgs e)
    {
        openFileDialog1.Title = "Open Image";
        openFileDialog1.FileName = "Image file";
        openFileDialog1.Filter = "Image files (*.jpg, *.img, *.png, *.jpeg)|*.jpg; *.img; *.png; *.jpeg|All files (*.*)|*.*";
       if (openFileDialog1.ShowDialog() == DialogResult.OK)
           {
           textBox1.Text = openFileDialog1.FileName;
           }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        openFileDialog2.Title = "Open exe";
        openFileDialog2.FileName = "Exe file";
        openFileDialog2.Filter = "Exe files (*.exe)|*.exe|All files(*.*)|*.*";

        if (openFileDialog2.ShowDialog() == DialogResult.OK)
        {
            textBox2.Text = openFileDialog2.FileName;
        }
    }

    private void flpContainer_Paint(object sender, PaintEventArgs e)
    {
        flpContainer.AutoScroll = true;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        if (comboBox1.Text == "")
        {
            MessageBox.Show("You didn't choose game that you want delete!");
        }

        else if (comboBox1.Text  != "")
        {
            Control foundControl = null;
            foreach (Control c in flpContainer.Controls)
            {
                c.Name = comboBox1.Text;
                foundControl = c;
            }
            flpContainer.Controls.Remove(foundControl);
            counter1 = counter1 - 1;
            label1.Text = counter1.ToString();
            MessageBox.Show("Game " + comboBox1.Text + " was successfully deleted");
            comboBox1.Items.Remove(comboBox1.Text);
            comboBox1.Text = "";
        }
    }
}

FlowLayoutPanel = flpContainter. Итак, мой вопрос: как я могу сохранить элементы (кнопки) в FlowLayoutPanel и как их загрузить позже? Спасибо за ответ!

Теги:
winforms
save
flowlayoutpanel

1 ответ

2
Лучший ответ

Вы должны создать класс для своих элементов (игровых кнопок), включая их Название, Изображение и т.д. Затем вы можете сохранить их с помощью XML.

class Game {//Properties here }

Эта ссылка предоставит вам быстрый How-to о том, как это сделать. Для сохранения изображений вы можете преобразовать изображение в base64 и преобразовать его обратно в изображение при повторной загрузке XML файла.

  • 0
    Спасибо :). Кстати, это займет у меня много времени? : O: D
  • 1
    Создать класс или сохранить его? Создание классов не должно быть таким сложным, если у вас есть базовые знания в C #. Но вы всегда можете использовать Google, который поможет вам завершить его в течение часа :)
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню