c# - 在运行时添加文本框并保存更改

标签 c# .net winforms

我正在开发一个Windows窗体项目,需要用户通过单击按钮添加新字段(文本框和标签),我想要实现的是。用户添加新字段后,会自动创建一个文本框并将其保存到我的表单的设置中。所以当我再次运行我的项目时。新添加的文本框(从运行时)可用。有什么可行的方法吗?我是 c# 新手,提前致谢!

最佳答案

你试试这个

DataTable 位于 System.Data 内部

using System.Data;

保存为 xml

private void button1_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable("Settings"); //we use DataTable class

    dt.Columns.Add("ID");
    dt.Columns.Add("Control");
    dt.Columns.Add("ControlName");
    dt.Columns.Add("Top");
    dt.Columns.Add("Left");
    dt.Columns.Add("Width");
    dt.Columns.Add("Height");
    /*
     * You add more settings here
     */


    int id = 0;

    foreach (Control ctrl in this.Controls) //this.Controls is the parent control where the textbox is located
    {
        string c = ctrl.GetType().Name;
        switch (c)
        {
            case "TextBox":
                DataRow dr = dt.NewRow();
                dr["ID"] = id++;
                dr["Control"] = c;
                dr["ControlName"] = ctrl.Name;
                dr["Top"] = ctrl.Top;
                dr["Left"] = ctrl.Left;
                dr["Width"] = ctrl.Width;
                dr["Height"] = ctrl.Height;
                /*
                    * You add more settings here
                    */
                dt.Rows.Add(dr);
                break;
        }
    }

    dt.WriteXml(@"c:\TestFile.xml", XmlWriteMode.WriteSchema); //You can use save dialog to browse the location
}

检索

private void button2_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable("Settings");

    dt.ReadXml(@"c:\TestFile.xml");

    foreach (DataRow dr in dt.Rows)
    {
        switch (dr["Control"].ToString())
        {
            case "TextBox":
                var t = new TextBox();
                t.Name = dr["ControlName"].ToString();
                t.Top = Convert.ToInt32(dr["Top"]);
                t.Left = Convert.ToInt32(dr["Left"]);
                t.Width = Convert.ToInt32(dr["Width"]);
                t.Height = Convert.ToInt32(dr["Height"]);

                this.Controls.Add(t);
                break;
        }
    }

}

关于c# - 在运行时添加文本框并保存更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849912/

相关文章:

c# - 上下文菜单项的事件处理程序

c# - 每次使用 "Not Allowed"使用 ASP Identity 登录失败(即使 'email' 和 'username' 具有相同的值))

c# - 一个解决方案中包含多个 Azure 云服务

c# - 缓存服务更新和新值作为 "DistinctLatest"和订阅时的完整缓存内容

c# - Entity Framework - 为什么 EF 在 1 对 1 关系中使用 LEFT OUTER JOIN?

c# - 在c#中的每个打印页面中打印页码

c# - 如何禁用 WinForms 中 TreeView 的节点重命名?

c# - 多个 Windows 用户帐户上的一个实例应用程序

c# - 如何将RGBA css颜色格式转换为十六进制格式

c# - 我可以使用 javascript 移动 div 并保留其回发能力吗?