Можно ли сохранить пользовательский элемент управления в базе данных

Можно ли сохранить пользовательский элемент управления WinForms (например, кнопка) в базе данных? Или единственное, что можно сохранить - это свойство settings.

EDIT: Как то, что сказал triggerX. Я проверил сериализуемую идею.

btnAttrib.cs

[Serializable()]
class btnAttrib
{
    public Point LocationBTN { get; set; }
    public Size SizeBTN { get; set; }
    public string NameBTN { get; set; }

    public btnAttrib(Point l, Size s, string n) 
    {
        this.LocationBTN = l;
        this.SizeBTN = s;
        this.NameBTN = n;
    }
}

MainForm.cs

 private void button2_Click(object sender, EventArgs e)
    {
        var btnAttr = new List<btnAttrib>();

        btnAttr.Add(new btnAttrib(new Point(50, 100), new Size(50, 50), "Button 1"));
        btnAttr.Add(new btnAttrib(new Point(100, 100), new Size(50, 50), "Button 2"));
        btnAttr.Add(new btnAttrib(new Point(150, 100), new Size(50, 50), "Button 3"));
        btnAttr.Add(new btnAttrib(new Point(200, 100), new Size(50, 50), "Button 4"));

        try
        {
            using(Stream st = File.Open("btnSettings.bin", FileMode.Create)) {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(st, btnAttr);
            }
        }
        catch (Exception ex) {
            MessageBox.Show(ex.Message, "Exception");
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try {
            using (Stream st = File.Open("btnSettings.bin", FileMode.Open)) {
                BinaryFormatter bf = new BinaryFormatter();

                var btnAttr2 = (List< btnAttrib>)bf.Deserialize(st);
                foreach(btnAttrib btAtt in btnAttr2) {

                    Button nBTN = new Button();
                    nBTN.Location = btAtt.LocationBTN;
                    nBTN.Size = btAtt.SizeBTN;
                    nBTN.Name = btAtt.NameBTN;

                    this.Controls.Add(nBTN);
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Exception");
        }
    }

Это лучшая идея для сохранения пользовательских элементов управления?

1
задан p.campbell 2 September 2010 в 02:05
поделиться

1 ответ

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

2
ответ дан 2 September 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: