【C#】新建窗体文件,Form、UserControl

用途功能性架构方面进行描述。

1. 继承自 Form 的窗体(通常是窗口):

在 C# 中,Form 是用于创建应用程序的主窗口或对话框窗口的类。当您继承自 Form 时,您创建的是一个完整的窗口,可以显示内容、与用户交互,并且能够处理窗口的生命周期(例如打开、关闭、最小化、最大化等)。

特点:
  • 可独立显示 :继承自 Form 的类通常表示一个完整的窗口,可以作为应用程序中的主窗口或对话框显示。
  • 具备完整的窗口功能:包括窗口的标题、边框、尺寸调整、最大化/最小化等。
  • 生命周期管理 :它有自己的生命周期,例如打开(Show())和关闭(Close())。
  • 窗体事件 :它可以处理窗体级别的事件,如 Form_LoadForm_CloseResize 等。
示例:
csharp 复制代码
public class MyForm : Form
{
    public MyForm()
    {
        this.Text = "My Custom Form";
    }
    
    // 其他自定义功能
}

2. 继承自 UserControl 的窗体(通常是自定义控件):

UserControl 是用于创建自定义控件的类,它通常是窗口的一部分,可以嵌入到其他窗体中。它不像 Form 那样独立显示,而是作为嵌入式控件存在,通常用于封装某些功能或UI元素,以便复用。

特点:
  • 作为控件嵌入 :继承自 UserControl 的类通常不是一个独立的窗口,而是可以嵌入到窗体或其他控件中的组件。
  • 封装和复用:适用于将某些功能封装到控件中,方便在多个窗体或应用中复用。
  • 没有独立生命周期:它的生命周期由父窗体或控件管理,不能直接作为独立的窗口显示。
  • 没有窗口边框 :不像 Form,它没有边框、标题栏或窗口管理的功能。
示例:
csharp 复制代码
public class MyUserControl : UserControl
{
    public MyUserControl()
    {
        this.Size = new Size(200, 100);
        this.BackColor = Color.LightBlue;
    }

    // 其他自定义功能
}

关键区别总结

特性 继承自 Form 的窗体 继承自 UserControl 的控件
独立显示 是的,能够作为独立窗口显示。 否,必须嵌入到父窗体或控件中显示。
窗口管理 拥有完整的窗口功能(如最小化、最大化、关闭等)。 没有窗口管理功能,作为控件嵌入使用。
生命周期 拥有独立的生命周期,可以单独打开和关闭。 生命周期由其父窗体或父控件管理,不能单独打开。
功能 用于创建应用程序的窗口或对话框。 用于创建可重用的自定义控件,通常是 UI 组件的一部分。
事件处理 处理窗体级别的事件,如加载、关闭、大小变化等。 处理控件级别的事件,如按钮点击、文本变化等。

适用场景:

  • 继承自 Form :当你需要一个独立的窗口时(比如主窗口、弹出对话框等)。
  • 继承自 UserControl :当你需要创建一个可以重复使用的控件时(比如一个带有按钮、文本框的自定义控件,可以嵌入到多个窗体中)。

示例应用:

  • 如果要做一个应用程序,并且需要显示一个主界面,选择继承自 Form
  • 如果要创建一个自定义按钮面板,或者一个包含多个控件的自定义视图,可以继承自 UserControl

总结:

继承自 Form 的类用于表示独立窗口 ,而继承自 UserControl 的类用于表示可嵌入的控件。这两者各自有不同的用途,选择哪一种取决于要实现的功能。

相关推荐
Gofarlic_oms116 分钟前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
AI+程序员在路上1 小时前
VS Code 完全使用指南:下载、安装、核心功能与 内置AI 编程助手实战
开发语言·人工智能·windows·开源
invicinble1 小时前
这里对java的知识体系做一个全域的介绍
java·开发语言·python
catchadmin2 小时前
使用 PHP TrueAsync 改造 Laravel 协程异步化的可行路径
开发语言·php·laravel
wbs_scy2 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·开发语言
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
郑州光合科技余经理3 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
南子北游4 小时前
Python学习(基础语法1)
开发语言·python·学习
张健11564096484 小时前
使用信号量限制并发数量
开发语言·c++
糯米团子7494 小时前
Web Worker
开发语言·前端·javascript