C# 在运行时动态创建按钮,并在c中永久存储和检索它#

C# 在运行时动态创建按钮,并在c中永久存储和检索它#,c#,.net,oop,C#,.net,Oop,我在运行时动态创建按钮。 但当我关闭并重新打开时,这些按钮将消失。 它如何存储永久动态创建的按钮和其他控件 动态创建控制按钮代码为: int loc=150; private void Button1_Click(object sender, EventArgs e){ CreateDynamicButton(); } private void CreateDynamicButton() { // Crea

我在运行时动态创建按钮。 但当我关闭并重新打开时,这些按钮将消失。 它如何存储永久动态创建的按钮和其他控件

动态创建控制按钮代码为:

    int loc=150;
    private void Button1_Click(object sender, EventArgs e){
    CreateDynamicButton();
    }

        private void CreateDynamicButton()
        {
            // Create a Button object 
            Button dynamicButton = new Button();

            // Set Button properties
            dynamicButton.Height = 40;
            dynamicButton.Width = 300;
            dynamicButton.BackColor = Color.Red;
            dynamicButton.ForeColor = Color.Blue;
            dynamicButton.Location = new Point(20, loc);
    loc=loc+50;
            dynamicButton.Text = "I am Dynamic Button";
            dynamicButton.Name = "DynamicButton";
            dynamicButton.Font = new Font("Georgia", 16);

            // Add a Button Click Event handler
            dynamicButton.Click += new EventHandler(DynamicButton_Click);

            // Add Button to the Form. Placement of the Button
            // will be based on the Location and Size of button
            Controls.Add(dynamicButton);            
        }

        /// <summary>
        /// Button click event handler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DynamicButton_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Dynamic button is clicked");
propertyGrid1.SelectedObject=sender;
*****and i change it some color fontsize in propertyGrid1 it will be changed
*****how do i save permanently 
        } 
int loc=150;
私有无效按钮1\u单击(对象发送者,事件参数e){
CreateDynamicButton();
}
私有void CreateDynamicButton()
{
//创建一个按钮对象
按钮动态按钮=新建按钮();
//设置按钮属性
动态按钮。高度=40;
动态按钮。宽度=300;
dynamicButton.BackColor=Color.Red;
dynamicButton.ForeColor=Color.Blue;
动态按钮位置=新点(20,位置);
loc=loc+50;
Text=“我是动态按钮”;
dynamicButton.Name=“dynamicButton”;
Font=新字体(“格鲁吉亚”,16);
//添加按钮单击事件处理程序
dynamicButton.Click+=新建事件处理程序(dynamicButton\u Click);
//将按钮添加到表单。按钮的位置
//将基于按钮的位置和大小
控件。添加(dynamicButton);
}
/// 
///按钮单击事件处理程序
/// 
/// 
/// 
私有无效动态按钮单击(对象发送者,事件参数)
{
MessageBox.Show(“单击动态按钮”);
propertyGrid1.SelectedObject=sender;
*****我在propertyGrid1中更改了一些颜色fontsize它会被更改
*****如何永久保存
} 
请帮助我如何永久存储所有控件(控件颜色、位置、名称…)


提前谢谢。

你真的不能,否则它不会是动态的。每次需要按钮时都需要调用代码。如果需要,可以将其存储在文件或表中


在您的示例中,据我判断,按钮不太需要是动态的。但它可能只是一个示例,我认为您应该使用该类并序列化整个
控件
对象

    FileStream fs = new FileStream("DataFile.dat", FileMode.Create);

    BinaryFormatter formatter = new BinaryFormatter();
    try 
    {
        formatter.Serialize(fs, Controls);
    }
    finally 
    {
        fs.Close();
    }
和反序列化

    FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
    try 
    {
        BinaryFormatter formatter = new BinaryFormatter();
        Controls = (Control.ControlCollection)formatter.Deserialize(fs);
    }
    finally 
    {
        fs.Close();
    }

它只是一个示例,但我存储了所有控件的布局和属性。请以任何可能的方式编辑使用propertygrid获取当前属性永久保存并加载。