c# - 如何在C#中访问Form类?

标签 c# .net winforms

当在 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 类在哪里以及如何在该类中编写上面的代码不知道,所以这是我的问题。

最佳答案

您无法更改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;
    }
}

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

然后创建您的 NewForm 表单,如下所示:

public partial class NewForm: baseForm
{
}

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

关于c# - 如何在C#中访问Form类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23224354/

相关文章:

c# - 更改 Winforms 中的连接字符串

c# - 如何在 C#.Net 中最小化和最大化?

在 WCF 中使用命名管道的 C# 异步调用

c# - 在 asp.net MVC 4 webapp 中,用户上传的文件存储在哪里?

c# - 使用奇怪的 namespace 序列化 XML?

c# - 如何防止 MyISAM 大表崩溃

c# - 在 AppDomain 已加载到 ASP.NET 中时替换 DLL

.net - 如何将 DataTrigger 绑定(bind)到资源定义样式的 Child 属性?

c# - 如何删除应用磁贴的文本?

c# - 当我们覆盖 OnPaint 时,我们什么时候应该调用 base.OnPaint()?