【问题标题】:How to access Form class in C#?如何在 C# 中访问 Form 类?
【发布时间】:2014-04-22 15:52:31
【问题描述】:

当我们在 c# 中添加任何新的 windows 窗体时,该窗体默认继承自 Form 类,所以我想查看这个 Form 类,并且我想为我的项目更改默认 Form 类中的某些内容。

那么,这个 Form 类在哪里以及如何更改它?

我有很多表格。并且所有表单的加载事件和调整大小事件都包含以下代码。

private void frmBranchDetails_Resize(object sender, EventArgs e)
{
    panel1.Left = (this.ClientSize.Width - panel1.Width) / 2;
    panel1.Top = (this.ClientSize.Height - panel1.Height) / 2;
}

private void frmBranchDetails_Load(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Maximized;
}

所以我想在我们添加任何新表单时继承的内置 Form 类中只编写一次上述代码。

所以不要在所有的窗口窗体中重复写上面的代码。

所以我想在添加任何新表单时自动添加上述代码,因为默认表单类会继承任何表单。所以我想在 Form 类中编写上面的代码。

但是这个默认的 Form 类在哪里以及如何在该类中编写上面的代码不知道所以这是我的问题。

【问题讨论】:

  • 我们在这里遗漏了很多细节以提供帮助。您如何添加新表单,您希望在哪里找到它们?
  • 我认为你想要做的不是正确的思考方式。您的表单类继承了Form 类,以便您可以在必要时重新实现Form 的功能。因此,您永远不需要更改任何Form 的代码。
  • 抱歉,我的提问方式不好。
  • 请告诉我们,您为什么要更改它。或者最好说出你想要做什么。你可能想错了怎么做。
  • 对不起,我将编辑我的问题并尝试以更好的理解提问。真的很抱歉,我问问题的方式不好。

标签: c# .net winforms


【解决方案1】:

您无法更改 System.Windows.Forms 中的任何内容。但你可以做的是:

  1. 创建一个继承自System.Windows.Forms 的parentForm。

    public partial class ParentForm: System.Windows.Forms
    
  2. ParentForm中额外添加你需要的功能。

  3. 创建继承自此ParentForm 的所有其他表单。喜欢:

    public partial class NewForm: ParentForm
    

这就是继承的美妙之处。

编辑:

针对您的问题:

创建一个 ParentForm 像:

public partial class baseForm : Form
{
    public baseForm()
    {
        this.Load += new System.EventHandler(this.FormLoad); 
        this.Resize += new System.EventHandler(this.frmBranchDetails_Resize);        
    }
    protected virtual void FormLoad(object sender, EventArgs e)         
    {             
        this.WindowState = FormWindowState.Maximized;         
    }

    private void frmBranchDetails_Resize(object sender, EventArgs e)
    {
        panel1.Left = (this.ClientSize.Width - panel1.Width) / 2;
        panel1.Top = (this.ClientSize.Height - panel1.Height) / 2;
    }
}

注意:应该在baseForm 中创建panel1 才能访问它。

然后创建您的NewForm 表单,例如:

public partial class NewForm: baseForm
{
}

现在NewForm 表单已经具备这两个功能。

【讨论】:

  • '公共部分类 Base : Form { public Base() { this.Load += new System.EventHandler(this.FormLoad); } protected virtual void FormLoad(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; } }'
  • @user3216114:你想添加这两个功能,对吧?我将编辑我的答案。
  • 我使用上面我的cmets的代码public partial class NewForm : Base创建了Form的加载事件但是如何在基类中创建resize事件。
  • 你真的不应该使用事件。改写 OnLoadOnResize 方法。
  • Hello Raging Bull 在类文件中出现以下错误:当前上下文中不存在名称'panel1'
猜你喜欢
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 2012-09-07
  • 2013-10-10
  • 1970-01-01
相关资源
最近更新 更多