首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果动态创建的用户控件在c#中包含一些按钮,我如何保存它?

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

Stack Overflow用户
提问于 2016-01-25 01:38:09
回答 2查看 139关注 0票数 0

我是C#的新手。我使用的是windows窗体和Form1,它包含两个按钮(一个在运行时创建用户控件,另一个在运行时创建用户控件上的按钮)。

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

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

有什么想法吗?请帮帮我。谢谢

代码语言:javascript
代码运行次数:0
运行
复制
 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);



    }




}
EN

回答 2

Stack Overflow用户

发布于 2016-01-25 01:53:00

好的,首先你需要创建一个类,用你需要的属性来表示其中一个按钮。

代码语言:javascript
代码运行次数:0
运行
复制
class MyButton
{
    public string ButtonText {get;set;}
}

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

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

很简单。

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

你应该注意WPF和它的MVVM模式。它和它非常相似。也可以看看命令模式,当它涉及到这一点时,请使用this模式。

票数 1
EN

Stack Overflow用户

发布于 2016-01-25 01:49:26

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34979107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档