C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# Windows窗体技术及基础控件(一)

C# 入门基础知识 - C# Windows窗体技术及基础控件

  • 第12节 Windows窗体技术及基础控件
    • 12.1 创建Winform 程序
    • 12.2 窗体的添加与删除
    • 12.3 窗体的常用属性
    • 12.4 窗体的常用事件
    • 12.5 窗体中添加控件与窗体显示和隐藏
    • 12.6 MDI 窗体
    • 12.7 窗体中控件的基本操作

更多C#基础知识点可查看:C#学习笔记 - C#基础知识 - C#从入门到放弃

第12节 Windows窗体技术及基础控件

12.1 创建Winform 程序

创建一个Winform程序,可以按照以下步骤进行:

1、打开Visual Studio或其他C#开发环境。

2、在菜单栏中选择“文件(File)” > “新建(New)” > “项目(Project)”。

3、在“创建新项目(Create a new project)”对话框中,选择“Visual C#” > “Windows 桌面(Windows Desktop)” > “Windows 窗体应用程序(Windows Forms App)”。

4、在“项目名称(Project name)”中输入一个有意义的名称。

5、确保选择了正确的位置作为项目的保存位置。

6、点击“确定(Create)”按钮来创建项目。

7、Visual Studio将自动为你生成一个窗体(Form)文件,并在设计视图中打开。

8、在设计视图中,你可以使用工具箱(Toolbox)中的控件,通过拖放的方式添加各种基础控件到窗体上。

9、通过属性窗口(Properties Window),可以修改控件的属性,如文本、大小、位置、颜色等。

10、在窗体上添加按钮(Button)控件,并为按钮添加点击事件处理代码。

11、在按钮的点击事件处理方法中,编写你的业务逻辑代码。

12、可以通过运行按钮或按下F5键来调试和运行你的Winform程序。

12.2 窗体的添加与删除

在Winform中,可以按照以下步骤进行窗体的添加和删除:

一、添加窗体:

1、在解决方案资源管理器中,右键单击你的项目,选择“添加” > “新建项”。

2、在“添加新建项”对话框中,选择“Windows 窗体”模板,命名窗体并点击“添加”按钮。

3、在解决方案资源管理器中,你会看到新创建的窗体文件(通常以.cs或.Designer.cs结尾)。

4、双击打开窗体文件,进入窗体的设计视图。

5、在设计视图中,你可以使用工具箱中的控件,通过拖放的方式添加各种基础控件到窗体上。

6、使用属性窗口可以修改控件的属性,如文本、大小、位置、颜色等。
删除窗体:

7、在解决方案资源管理器中,右键单击要删除的窗体文件,选择“删除”。
在弹出的对话框中确认删除操作。

注意:添加和删除窗体时要小心确保操作正确,以免意外删除或损坏文件。在删除窗体之前,最好先备份项目文件以防万一。

12.3 窗体的常用属性

窗体(Form)是Winform应用程序中的主要界面元素,具有许多常用的属性。下面列举了一些常用的窗体属性:

1、Name:窗体的名称,用于在代码中引用窗体对象。

2、Text:窗体的标题文本,显示在窗体的标题栏中。

3、Size:窗体的大小,以像素为单位。

4、Location:窗体的位置,相对于父容器(通常是屏幕)的坐标。

5、BackColor:窗体的背景颜色。

6、ForeColor:窗体的前景颜色,用于文本和绘图。

7、Icon:窗体的图标,显示在标题栏和任务栏中。

8、FormBorderStyle:窗体的边框样式,如无边框、大小可调整的边框等。

9、Opacity:窗体的透明度,取值范围为0.0(完全透明)到1.0(完全不透明)之间。

10、TopMost:指定窗体是否在最顶层显示,即始终处于其他窗体之上。

11、ControlBox:指定窗体是否显示控制框(包括最小化、最大化和关闭按钮)。

12、MaximizeBox:指定窗体是否可最大化。

13、MinimizeBox:指定窗体是否可最小化。

14、ShowInTaskbar:指定窗体是否在任务栏中显示。

15、FormStartPosition:指定窗体显示时的起始位置,如居中、具体坐标等。

16、Enabled:指定窗体是否启用,禁用窗体将无法与用户交互。

上述只是一些常见的窗体属性示例,实际上窗体对象还有许多其他属性可供设置。通过修改这些属性,可以调整窗体的外观、行为和交互方式,以满足不同应用程序需求。

12.4 窗体的常用事件

窗体(Form)是WinForm应用程序中的主要界面元素,有许多常用的事件可以用来响应用户操作和处理窗体状态的变化。下面列举了一些常用的窗体事件:

1、Load:窗体加载完成时触发,可用于进行初始化操作或加载数据。

2、Closed:窗体关闭时触发,可用于释放资源或保存数据。

3、Activated:窗体被激活时触发,即窗体成为焦点并处于活动状态。

4、Deactivate:窗体失去焦点并不再处于活动状态时触发。

5、Resize:窗体大小变化时触发,可用于调整布局或处理窗体尺寸相关的操作。

6、FormClosing:窗体即将关闭时触发,可用于确认关闭操作或阻止关闭。

7、FormClosed:窗体已经关闭时触发。

8、KeyDown / KeyUp:用户按下/释放键盘按键时触发,可用于处理键盘输入操作。

9、MouseClick / MouseDoubleClick:用户单击/双击鼠标时触发。

10、MouseEnter / MouseLeave:鼠标进入/离开窗体时触发。

11、MouseMove:鼠标在窗体内移动时触发。

上述只是一些常见的窗体事件示例,实际上窗体对象还有许多其他事件可供响应和处理。通过处理这些事件,你可以捕捉用户的操作、改变窗体行为、相应外部状态的变化等,以实现不同的应用程序的逻辑和交互效果。

12.5 窗体中添加控件与窗体显示和隐藏

在窗体(Form)中添加控件可以通过以下步骤进行:

1、打开项目中窗体文件,在设计视图中,可以看到工具箱(Toolbox)位于窗体设计区的左侧。

2、在工具箱中,可以找到各种控件,如按钮(Button)、文本框(TextBox)、标签(Label)等。

3、通过单击工具箱中的控件,在窗体中按住鼠标左键并进行拖放操作,将控件放置在你想要的位置。

4、在窗体上添加的控件可以通过属性窗口(Properties Window)进行修改和设置,如文本、大小、位置、外观等。

5、窗体的显示和隐藏可以通过调用窗体对象的方法进行:

6、显示窗体:使用窗体对象的Show()方法可以显示窗体。例如:myForm.Show( );

7、隐藏窗体:使用窗体对象的Hide()方法可以隐藏窗体。例如:myForm.Hide( );

8、还可以使用窗体对象的Visible属性来控制窗体的可见性,例如:

myForm.Visible = true; 		//可以使窗体显示。
myForm.Visible = false; 	//可以使窗体隐藏。

注意:
控件添加和设置以及窗体的显示和隐藏都应在适当的时机和事件处理中进行,以实现所需的效果。

12.6 MDI 窗体

MDI(Multiple Document Interface,多文档界面)窗体是Windows应用程序中常见的一种布局方式,它允许在一个父窗体下同时容纳多个子窗体,每个子窗体可以是一个独立的文档窗体。

在WinForm中创建一个MDI窗体可以按照以下步骤进行:

1、创建一个新的Windows窗体应用程序,或打开一个现有的Windows窗体应用程序。

2、在父窗体上设置IsMdiContainer属性为true,即将父窗体设置为MDI容器窗体,可以通过属性窗口或代码进行设置。

3、在父窗体的Load事件处理方法中,添加以下代码:this.IsMdiContainer = true;

4、创建子窗体。你可以创建一个新的窗体,或者将现有的窗体设置为子窗体。

5、在父窗体中调用子窗体的Show()方法启动子窗体并将其显示在父窗体的MDI容器中。

【代码示例】

// 创建父窗体(MDI容器)
public partial class MainForm : Form
{public MainForm(){InitializeComponent();this.IsMdiContainer = true; // 设置父窗体为MDI容器}private void MainForm_Load(object sender, EventArgs e){// 在Load事件处理方法中添加子窗体ChildForm childForm = new ChildForm();childForm.MdiParent = this; // 设置子窗体的父窗体为当前窗体childForm.Show(); // 显示子窗体}
}// 创建子窗体
public partial class ChildForm : Form
{public ChildForm(){InitializeComponent();}
}

示例代码说明:
主窗体(MainForm)被设置为MDI容器窗体,然后在主窗体的Load事件处理方法中创建了一个子窗体(ChildForm),并显示在MDI容器中。通过这样的方式,可以在MDI容器窗体中添加多个子窗体,每个子窗体可以独立地进行操作和显示,方便管理多个文档窗口。

12.7 窗体中控件的基本操作

在窗体(Form)中,可以对控件进行各种基本操作,如添加、修改、删除和获取控件的属性值等。以下是一些常见的窗体控件基本操作:

1、添加控件:

  • 打开窗体的设计视图,在工具箱(Toolbox)中选择所需的控件。
  • 点击控件并按住鼠标左键,在窗体中拖动以放置控件的位置。

2、修改控件属性:

  • 选中控件,在属性窗口(PropertiesWindow)中查看和修改控件的属性值。
  • 可以修改属性如文本(Text)、大小(Size)、位置(Location)、背景颜色(BackColor)等。

3、删除控件:

  • 选中要删除的控件,按下Delete键或右键单击并选择“删除”或“Cut”选项。

4、获取和设置控件属性值:

  • 通过代码访问和修改控件的属性。
  • 使用控件的名称和属性名来获取和设置属性值。例如,button1.Text = "Click Me"; 可以设置按钮的文本为"Click Me"

5、控件事件处理:

  • 可以在窗体或控件中为控件添加事件处理方法。
  • 在设计视图中双击控件或在属性窗口中选择事件,并双击对应的事件,自动生成事件处理方法的代码。
  • 在事件处理方法中编写你的业务逻辑代码,以响应控件的事件。

在进行操作前,确保所要修改和删除的控件被正确选中,避免对错误的控件进行操作。此外,属性和事件的具体名称可能因在窗体中,控件(Controls)是用来展示和交互的元素,可以通过代码来操纵控件的属性和方法。

以下是一些常见的窗体控件操作示例:
1、获取或设置控件的文本:

// 获取控件的文本
string text = textBox1.Text;// 设置控件的文本
textBox1.Text = "Hello, World!";

2、禁用或启用控件:

// 禁用控件
button1.Enabled = false;// 启用控件
button1.Enabled = true;

3、隐藏或显示控件:

// 隐藏控件
label1.Visible = false;// 显示控件
label1.Visible = true;

4、修改控件的背景颜色:

// 修改控件的背景颜色
textBox1.BackColor = Color.Yellow;

5、设置控件的位置和大小:

// 设置控件的位置
button1.Location = new Point(100, 100);// 设置控件的大小
button1.Size = new Size(200, 50);

6、响应控件的事件:

// 添加按钮点击事件处理方法
button1.Click += Button1_Click;// 定义按钮点击事件处理方法
private void Button1_Click(object sender, EventArgs e)
{// 处理按钮点击事件MessageBox.Show("按钮被点击了!");
}

通过这些操作,你可以操纵窗体中的控件,修改它们的属性、状态和行为,以实现你的应用程序的功能和交互效果。根据具体的控件类型,可能还有其他特定的操作方法和事件可供使用。可以参考在WinForm中,可以对窗体中的控件进行基本的操作,包括添加、删除、修改属性和事件处理等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

按照故障码类型分类的API接口

随着汽车的普及,车辆故障也成为了一个不可忽视的问题。对于车主来说,及时了解故障码的含义以及解决方案十分重要。挖数据平台为解决这一问题,提供了一套按照故障码类型分类的API接口,用于查询车辆故障、故障码适用品牌以及提供相应…

STL——queue容器

1.queue基本概念 概念:queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。 队列容器允许从一端新增元素,从另一端移除元素。 队列中只有队头和队尾才可以被外界使用,因此队列不允许…

PHP调用系统命令/其他应用程序 并获取应用返回值的方法

PHP应用可以非常简单的调用系统中的任意应用程序并获取其返回值, 即与其他应用程序通信和整合. 使用PHP内置函数 popen, proc_open 函数即可轻松实现, 以下为示例代码: <?php error_reporting(E_ALL);/* 加入重定向以得到标准错误输出 stderr。 */ $cmd "/path/to/…

Java API 操作Docker浅谈

背景&#xff1a; 使用com.github.docker-java库可以很方便地在Java中操作Docker。下面是一个详细的教程&#xff0c;包括创建镜像、创建容器、启动容器、停止容器和删除容器的步骤以及每一步的说明。 前提&#xff1a; 首先&#xff0c;在你的Java项目中添加com.github.doc…

P8598 [蓝桥杯 2013 省 AB] 错误票据

题目背景 某涉密单位下发了某种票据&#xff0c;并要在年终全部收回。 题目描述 每张票据有唯一的 ID 号&#xff0c;全年所有票据的 ID 号是连续的&#xff0c;但 ID 的开始数码是随机选定的。因为工作人员疏忽&#xff0c;在录入 ID 号的时候发生了一处错误&#xff0c;造…

LLM、AGI、多模态AI 篇二:Prompt编写技巧

文章目录 系列生成图片(Stable Diffusion)生成文章(ChatGPT)代码生成(GitHub Copilot)Prompt编写模式Prompt模板Prompt 即代码系列 LLM、AGI、多模态AI 篇一:开源大语言模型简记 LLM、AGI、多模态AI 篇二:Prompt编写技巧 生成图片(Stable Diffusion) 视角和构图。 …

Linux之组管理和权限管理

组的概念 如图所示&#xff1a;test.txt是由tom创建的&#xff0c;所以tom是文件的所有者&#xff0c;tom归属于组A&#xff0c;组A就是文件的所在组&#xff1b;组B就是文件的其他组。 所有者 谁创建了文件&#xff0c;谁就是文件的所有者。 查看文件的所有者 指令&…

2024 计划

学习 brpc源码 netty源码 ace源码 《Javascript高级程序设计》 《《Full-stack web development with Vue.js and Node build scalable and powerful web apps with modern web stack, MongoDB, Vue, Node.js, and Express》&#xff08;之前没有看完&#xff09; 生活 每周…

Django 学习教程- Hello world入门案例

系列 Django 学习教程-介绍与安装-CSDN博客 欢迎来到第Djagno学习教程第二章Hello World 入门案例。 在本教程中&#xff0c;我将引导您完成django的Hello World入门案例。 让我们开始吧&#xff01; 版本 Django 5.0Python 3.10 创建项目 安装 Django 之后&#xff0…

信创之国产浪潮电脑+统信UOS Linux操作系统体验10:visual studio code中调试C++程序

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 老猿在CSDN的《信创之国产浪潮电脑统信UOS操作系统体验2&#xff1a;安装visual studio code和cmake搭建C开发环镜》介绍了在国产浪潮电脑统信UOS操作系统中安装visual studio code和cmake搭建C开…

css动态传参,attr的妙用

今天再做一个编辑器的功能的时候&#xff0c;发现有一段非常奇妙的代码&#xff0c;使用attr获取div标签的data-label值。 css的attr?What fuck?这又是什么鬼东西&#xff0c;emmm。 查询后官方是这么回答的&#xff1a; CSS 表达式 attr() 用来获取选择到的元素的某一 HTM…

GO语言基础笔记(八):高级特性与性能优化

目录 反射&#xff08;Reflection&#xff09; 反射概念 反射的关键概念 反射的常见用途 代码示例 1. 检查类型和值 2. 修改变量值 3. 调用函数 4. 结构体反射 并发模式&#xff08;Concurrency Patterns&#xff09; 1. Worker Pool 模式 工作原理 在代码中的体现…

Mybatis插件运行原理及自定义插件

引言 MyBatis是一个流行的持久层框架&#xff0c;它提供了许多强大的功能来简化数据库访问和映射。其中一个非常重要的特性是插件&#xff08;Interceptor&#xff09;&#xff0c;它允许开发者在MyBatis的执行过程中插入自定义逻辑&#xff0c;以实现对SQL执行过程的定制化。…

Unity坦克大战开发全流程——结束场景——通关界面

结束场景——通关界面 就照着这样来拼 写代码 hideme不要忘了 修改上一节课中的代码

django/springboot后台+vue/js前端设计一款高校毕业生就业方向统计管理系统及可视化大屏

项目设计目的&#xff1a; 设计一款高校毕业生就业方向统计管理系统及可视化大屏&#xff0c;旨在为高校提供一个方便、高效的毕业生就业数据管理平台&#xff0c;帮助学校更好地了解毕业生的就业情况和就业方向&#xff0c;以便进行教育和就业指导。 功能需求&#xff1a; 用…

SpringBoot入门到精通-使用Jasypt对数据库账号密码加解密

引用代码库 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version></dependency> 配置启动 EnableEncryptableProperties public class Ce…

动态内存管理篇

为什么要动态内存分配&#xff1f; 之前&#xff0c;我们向内存申请空间&#xff0c;有两种方式&#xff0c;一种是定义变量&#xff0c;一种是建立数组&#xff1b;但是&#xff0c;这两种方式都有缺陷&#xff0c;创建的空间大小是固定的&#xff0c;在程序的运行过程中&…

买对好车省钱又防坑,高性价比的买车攻略

一、教程描述 正所谓隔行如隔山&#xff0c;买车这件事情并不简单&#xff0c;买车的内幕还是有不少的&#xff0c;本套教程讲述买车攻略&#xff0c;非常适合准备买车的朋友&#xff0c;可以帮助大家买车少入坑&#xff0c;高性价比买到自己心仪的车。本套买车教程&#xff0…

2023-12-23 LeetCode每日一题(移除石子使总数最小)

2023-12-23每日一题 一、题目编号 1962. 移除石子使总数最小二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 piles &#xff0c;数组 下标从 0 开始 &#xff0c;其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k &#xff0c;请你执行下述…

chromium通信系统-ipcz系统(七)-ipcz系统代码实现-跨Node通信-NonBroker和NonBroker通信

在chromium通信系统-ipcz系统(六)-ipcz系统代码实现-跨Node通信-基础通信 一文中我们分析了broker 和 nonbroker 通信的过程。本文我们来分析NonBroker 和NonBroker的通信过程&#xff0c;同样以单元测试为例子分析。 mojo/core/invitation_unittest.cc 951 DEFINE_TEST_CLIEN…