C#如何使用按钮单击事件创建代码以将表单设置回默认属性?

时间:2010-02-02 16:58:38

标签: c# forms properties default

使用Visual C#2008 express版,我试图在我的表单上创建一个按钮,将表单设置回默认属性,例如大小,背景颜色等等......任何人都有关于我如何做这个的任何例子?

4 个答案:

答案 0 :(得分:1)

对于每个属性信息,您可以获得DefaultValueAttribute并将所需的属性设置为其值。

答案 1 :(得分:1)

如果不在某处保存原始状态,则无法执行此操作。

只需创建一个包含默认信息的类:

class DefaultFormInfo
{
    int Width { get; set; }
    int Height { get; set; }
}

然后使用一些反思:

static DefaultFormInfo FormInfo = new DefaultFormInfo();

void FillDefaults()
{
            foreach (PropertyInfo pinf in FormInfo.GetType().GetProperties())
            {
                pinf.SetValue(FormInfo, this.GetType().GetProperty(pinf.Name).GetValue(this, null), null);
            }
}

void Restore()
{
    foreach (PropertyInfo pinf in FormInfo.GetType().GetProperties())
    {
        this.GetType().GetProperty(pinf.Name).SetValue(this, pinf.GetValue(FormInfo, null), null);
    }
}

答案 2 :(得分:1)

到目前为止,最简单的方法是创建表单的新实例并关闭旧表单。如果这是你的应用程序的主要形式,这需要一些手术,关闭它将终止程序。首先打开Program.cs并对其进行编辑,使其如下所示:

static class Program {
    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        AppContext = new ApplicationContext();
        AppContext.MainForm = new Form1();
        Application.Run(AppContext);
    }
    public static ApplicationContext AppContext;
}

ApplicationContext变量现在控制应用程序的生命周期,而不是Form1实例。您可以使用Form1中的代码重新创建表单:

    private void button1_Click(object sender, EventArgs e) {
        Form1 frm = new Form1();
        frm.StartPosition = FormStartPosition.Manual;
        frm.Location = this.Location;
        frm.Size = this.Size;
        Program.AppContext.MainForm = frm;
        frm.Show();
        this.Close();
    }

答案 3 :(得分:1)

最简单的解决方案可能是定义一些表单级别变量,并在事件中记录默认值,如Form Load事件:

// form scoped variables
private Color defaultBackColor;
private Rectangle defaultBounds;
private FormWindowState defaultFormWindowState;

// save the Form default Color, Bounds, FormWindowState
private void Form1_Load(object sender, EventArgs e)
{
    defaultBackColor = this.BackColor;
    defaultBounds = this.Bounds;
    defaultFormWindowState = this.WindowState;
}

然后在按钮的Click事件中:重置默认值:

// restore the defaults on Button click
private void btn_FormReset_Click(object sender, EventArgs e)
{
    this.WindowState = defaultFormWindowState;
    this.Bounds = defaultBounds;
    this.BackColor = defaultBackColor;
}

有一些更强大的方法可以使用Visual Studio的“设置功能”(在设计时和运行时):在以下位置查看它们:

How to: Create Application Settings Using the Designer

Application Settings Overview

How To: Write User Settings at Run Time with C#

How To: Read Settings at Run Time With C#