如果动态创建的用户控件包含 c# 中的一些按钮,如何保存该控件

本文关键字:控件 何保存 保存 按钮 用户 创建 动态 包含 如果 | 更新日期: 2023-09-27 18:31:36

我是C#的新手。我正在使用 Windows 窗体,我有 Form1,其中包含 2 个按钮(一个用于在运行时创建用户控件,另一个用于在运行时创建用户控件上的按钮)。

此代码创建用户控件,并在单击按钮时add_UserControl FlowLayoutPanel(以组织按钮位置)。然后,如果您单击Add_Buttons按钮,它会在FlowLayoutPanel上创建按钮,并且这一切都在运行时完成。

现在Form1假设我创建了用户控件和FlowLayoutPanel,然后创建了 5 个按钮,如何将此用户控件的属性/详细信息及其FlowLayoutPanel和 5 个按钮保存在 SQL 数据库中,以便以后在运行程序时使用它们?我一直在想一个想法,我上网了,但没有运气。

知道吗?请帮助我。谢谢

 public partial class Form1 : Form
{
    FlowLayoutPanel FLP = new FlowLayoutPanel();
    UserControl uc = new UserControl();

 private void add_UserControl_Click(object sender, EventArgs e)
    {
        uc.Height = 700;
        uc.Width = 900;
        uc.BackColor = Color.Black;
        Controls.Add(uc); //add UserControl on Form1

        FLP.Height = 600;
        FLP.Width = 800;
        FLP.BackColor = Color.DimGray;
        uc.Controls.Add(FLP); // add FlowLayoutPanel to UserControl
    }

    private void Add_Buttons_Click(object sender, EventArgs e)
    {
        //####### add buttons to FlowLayoutPanel ############
        Button dynamicButton = new Button();
        dynamicButton.Height = 50; 
        dynamicButton.Width = 200;
        dynamicButton.BackColor = Color.Green;
        dynamicButton.ForeColor = Color.Blue;
        dynamicButton.Text = "";
        FLP.Controls.Add(dynamicButton);

    }


}

如果动态创建的用户控件包含 c# 中的一些按钮,如何保存该控件

好的,首先你需要创建一个类,该类将表示具有所需属性的按钮之一。

class MyButton
{
    public string ButtonText {get;set;}
}

每次单击并创建按钮时,实际上都会创建此类的对象并将其添加到集合或列表中。然后,您将有一些其他代码监视集合,并且每次它获得新条目时,它都会创建一个新按钮并将其 Button 文本设置为 text 属性。当列表成员消失时,它会删除该按钮。

如果您需要记住更多属性(颜色、大小、字体等),您也可以将它们添加到类中。如果您还需要其他控件,....您始终可以创建通用父控件。

简单。

如果您希望能够重新加载它,则可以将 MyButton 类定义为可序列化并将其存储在 xml 文件中,并在生成时重新加载它。

您应该关注 WPF 及其 MVVM 模式。它与它非常相似。还要看看命令模式,当它来到这个时,有用的模式。

您可以在一个SQL表中记住FlowLayoutsPanel,在另一个表中,您可以保存属于这些FlowLayoutPanel的按钮。

在表单加载或应用程序加载时,您可以检查 SQL 数据库中是否已经存在 FlowLayoutPanel,并且确实存在相应的按钮,如果是,则创建它们,否则什么都不做。