繁体   English   中英

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

[英]How can I save a dynamically created user control if it contains some buttons in c#?

我是C#的新手。 我正在使用Windows窗体,并且我拥有包含两个按钮的Form1(一个在运行时创建用户控件,另一个在运行时创建用户控件的按钮)。

如果单击add_UserControl按钮,此代码将创建用户控件和FlowLayoutPanel (以组织按钮位置)。 然后,如果您单击Add_Buttons按钮,它将在FlowLayoutPanel上创建按钮,并且所有这些操作均在运行时完成。

现在在Form1我创建了用户控件和FlowLayoutPanel ,然后创建了5个按钮,如何在SQL数据库中将其用户控件的属性/细节及其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);



    }




}

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

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

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

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

简单。

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

您应该注意WPF及其MVVM模式。 它非常类似于它。 也可以看看命令模式,这是有用的模式。

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

在“表单加载”或“应用程序加载”上,可以检查SQL db中是否已经存在FlowLayoutPanels和相应的按钮,如果是,则创建它们,否则什么也不做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM