零基础学会asp.net做网站/公众号/小程序之三:实战初体验(简单程序教学)

关注我,持续分享逻辑思维&管理思维&面试题; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;

博主在互联网大厂深耕近二十年,从一线码农做起,到人工智能公司副总裁。希望把过往经验总结出来,帮助到更多同学。有兴趣可关注博主后加个人微信(平台规定文章中不能贴联系方式,需先关注博主,再加微信),后续一起交流学习。
本专栏以实战为主,轻理论。如果哪里有不太懂的,可以随时和我交流。

-------------------------------------正文----------------------------------------

目录

一、新建解决方案

二、新建项目

三、项目启动逻辑代码

四、添加恶搞按钮及处理逻辑

五、添加按钮闪烁特效

六、运行程序的几种方法

七、控件及用法

1. Button(按钮)

2. Label(标签)

3. TextBox(文本框)

4. ComboBox(组合框)

5. ListBox(列表框)

6. CheckBox(复选框)

7. RadioButton(单选按钮)

8. PictureBox(图片框)

9. DataGridView(数据网格视图)

10. TabControl(选项卡控件)

11. MenuStrip(菜单栏)

12. ToolStrip(工具栏)

13. ProgressBar(进度条)

14. DateTimePicker(日期时间选择器)

15. TrackBar(滑动条)


安装好各个环境后,我们直接开始教学。这里先从实战出发,以1-2个有趣的程序,让学生对编程感兴趣起来。

一、新建解决方案

打开Visual Studio后,点击“文件”--》“新建”--》“项目”,如下图所示。

在出来的对话框中,选择“其他项目类型”--》“Visual Studio 解决方案”,然后选定右边的“空白解决方案”,在下面输出解决方案的名字和路径。我在这里为了教学,新建了一个“CsdnTeach”的解决方案。

c#的解决方案(solution)就是解决一个问题的一揽子计划。它类似于一个文件夹,里面可以创建各种项目(如Windows程序、类库、网站,都可以)。当生成整个解决方案的时候,相当于把解决方案下的所有项目都编译一遍。生成所有项目的目标文件。

二、新建项目

为这个解决方案添加一个新项目。如下图所示,右键单击(后续称为右击)解决方案名字,“添加”--》“新建项目”。

这次添加Windows窗体应用程序,这个编译成功后,生成的是Widnwos下的可执行文件(exe后缀程序),只要本机有安装.net framework,均可运行这个可执行文件。此例中,我将此项目名称设置为EGao(恶搞)的拼音,则生成的可执行文件为:EGao.exe。

三、项目启动逻辑代码

添加后,出来的对应框,就是这个EGao.exe运行后的窗体。双击这个窗体的空白处,自动生成程序打开时,要执行的代码。如下图及再下面的代码所示。

private void Form1_Load(object sender, EventArgs e)
{MessageBox.Show("HelloWorld");
}

上面的例子中,我们在程序启动时,就弹出一个对话框,内容为:HelloWorld。在后面执行这个Exe的时候,会看到效果:先弹出一个对话框,再弹出Form1窗体。

四、添加恶搞按钮及处理逻辑

具体效果我们在后面执行时展示。当前我们先为这个窗体添加一个按钮。如下图,在工具箱中,找到Button,点一下,鼠标再移到Form1窗体中,就会呈现出类似截图的效果,鼠标左键按下,则开始画这个按钮,可自由调整,鼠标松开,则这个按钮大小调整到位(是不是和截图的效果很像)。

如上图,我们选中这个Button,选中属性选项卡,我们可以修改各种属性。
常见的就是修改Name,这时这个按钮的唯一标识。如果不修改,以后就只能Button1, Button2这样顺序去标识。因此,一般我们像写代码一样,对这个唯一标识进行标记,以便在后续用的时候,自己能记住它的名字。比如后续可能会在代码里,改变这个按钮的相关属性,那就可以使用Button1.属性名 = xx,这样的方式进行修改。在后面的例子中,我们会修改这个按钮的BackColor,即背景色。此处,我们因为是恶搞,将名字改为:BtnPig。
还有一个常见修改的属性是Text,这是显示给用户看的文本。这里我们修改为“不点我就是猪”。这个文本,是可以重复的。可以很多按钮的文本,都显示为同样的文字,只是位置不到。因为Name不同,所以,在代码里是以Name作为区分。

然后双击这个按钮,进入的就是点击这个按钮时,我们要进行做的事情。以下为具体代码:

private void BtnPig_Click(object sender, EventArgs e){DialogResult result = MessageBox.Show("Tips:请选择", "Title:确认下你是不是猪", MessageBoxButtons.YesNo);if (result == DialogResult.Yes){for (int i = 1; i <= 2; i++){MessageBox.Show("你承认了,我让你点2下就好,这是第【"+i.ToString()+"】次");}}else{for (int i = 1; i <= 3; i++){MessageBox.Show("你不承认,我要罚你点3下,这是第【" + i.ToString() + "】次");}}}

以上代码解释下,先是弹出一个带“是”和“否”的对话框。这个对话框的标题和提示分别为:"Title:确认下你是不是猪",和"Tips:请选择"。下面有显示效果。

并根据DialogResult result记录用户点了“是”还是“否”。如果“是”,则继续弹窗2下,如果“否”,则继续弹窗3下。如上图所示。

写好代码后,我们就可以右击这个项目名,进行生成(即编译)。编译的意思是根据现有代码,生成符合现有代码逻辑的软件/程序。

编译完后,点中间上部的“启动”按钮。就能启动这个EGao.exe程序了。

启动后,如前面介绍,先弹一个对话框:“HelloWorld”。

确定后,才会出现Form1这个窗体。

点击“不点我就是猪”这个按钮。我们能看到我们代码里指定的Title和Tips显示的位置。以及“是”和“否”按钮。先点“是”,看下效果。

如上,对话框呈现2次“你承认了,我让你点2下就好,这是第X次”。

我们再看看点“否”的效果。

效果:弹出3次“你不承认,我要罚你点3下,这是第X次”。

PS:此处并没有侮辱人的意思,只不过小孩子喜欢恶作剧,以这种手段来吸引孩子是比较合适的。我们可以甚至连续弹出100次“你是猪”这样的对话框。当然,这是初级恶搞。如果需要高级些的,可以不断地申请内存,真到死机。for循环里不断地new 内存即可。此处不展开讲。

五、添加按钮闪烁特效

难一点的来了(虽然还是很简单,但对初学者来说,已经足够吸引了)。我们增加一个按钮。Name为BtnColor,显示文本为“点我看看”,如下图:

双击这个按钮,即可编辑点击按钮后的逻辑代码:

Timer timer = new Timer();bool is_show = true;private void BtnColor_Click(object sender, EventArgs e){if (is_show){timer.Interval = 1000; // 1000毫秒(1秒)timer.Tick += Timer_Tick;is_show = false;timer.Start();}else{is_show = true;timer.Stop();}}bool color_judge = true;private void Timer_Tick(object sender, EventArgs e){if (color_judge){BtnPig.BackColor = Color.Red;color_judge = false;}else{BtnPig.BackColor = Color.Black;color_judge = true;}}

如上图,因Timer timer是全局变量,不能放在点击后的处理函数里,所以,我们把它放在了外面。
Timer属于另一种控件类,意思是在指定的间隔时间里,它将会运行指定的代码逻辑。

实现的逻辑为:第一次点击时,is_show是初始值(true),则进入初始代码:timer设置间隔时间为1秒,timer的处理函数为Timer_Tick,然后启动Timer。
这样,每秒会执行一次Timer_Tick,而每次进入Timer_Tick,就会反转一下color_judge,并根据color_judge的值,不断设置左边按钮的背景色。从而实现了每秒变一次左边按钮背景色的效果,即闪烁。如下图:

根据上面代码,再点一下“点我看看”,即停止闪烁。再次点击,又会闪烁。这样交替进行。

六、运行程序的几种方法

第1种方法是将项目设计为启动项目,如下图所示,右击项目,出来的“属性”选项中,在“调试”Tab中设计这个项目为启动项目。这样,当点击上述“启动”时,即启动这个解决方案的启动项目。我们上面的例子就是使用这种方法。

第2种方法是直接对相关项目右击,在出来的选项卡中选择“调度”--》“启动新实例”。这样,即使这个项目不是启动项目,也能单独运行它。

第3种方法是直接到这个项目的文件夹下,找到对应的bin/Debug,或bin/Release,里面会有这个项目生成后的目标文件。这里是EGao.exe,双击它,就像打开Windows应用程序一样,可以直接运行(运行电脑,需要安装.net framework)。

七、控件及用法

以上,我们介绍了窗体,以及按钮(Button)的使用。Windows应用程序,一般比较复杂,有各种按钮,下拉框,复选框,单选框等。下面再简单介绍下其它控件的用法。

1. Button(按钮)

  • 属性

    • Text:按钮上显示的文本。
    • Enabled:指示按钮是否可用。
    • ForeColor:按钮文本的颜色。
    • BackColor:按钮的背景颜色。
    • Font:按钮文本的字体。
  • 用法:按钮是最常见的用户交互控件之一。通过在Click事件上附加处理程序,您可以响应按钮的点击动作,并执行相应的操作。

  • 方法

    • PerformClick():通过代码模拟用户单击按钮。

2. Label(标签)

  • 属性

    • Text:标签上显示的文本。
    • ForeColor:文本的颜色。
    • BackColor:标签的背景颜色。
    • Font:文本的字体。
  • 用法:标签通常用于显示静态文本或作为界面元素的标识符。它们是只读的,用户不能在标签中输入文本。

3. TextBox(文本框)

  • 属性

    • Text:文本框中显示的文本。
    • ReadOnly:指示文本框是否为只读。
    • MaxLength:限制用户可以输入的最大字符数。
    • Multiline:指示文本框是否可以显示多行文本。
  • 用法:文本框允许用户输入文本,可以用于接收用户的输入、编辑数据等任务。

  • 方法

    • Select(int start, int length):选择文本框中的一部分文本。
    • Clear():清除文本框中的文本。

4. ComboBox(组合框)

  • 属性

    • Items:组合框中的项。
    • SelectedIndex:当前选定项的索引。
    • Text:组合框中当前选择项的文本。
  • 用法:组合框结合了文本框和列表框的功能,允许用户从一个下拉列表中选择一个项。

  • 方法

    • Add(string item):向组合框添加项。

5. ListBox(列表框)

  • 属性

    • Items:列表框中的项。
    • SelectedIndex:当前选定项的索引。
    • SelectedItems:选定的项的集合。
  • 用法:列表框显示一个列表,用户可以从中选择一个或多个项。多选模式下,可以使用SelectedIndices属性来访问选定项的索引。

6. CheckBox(复选框)

  • 属性

    • Checked:指示复选框是否被选中。
    • Text:复选框旁边显示的文本。
  • 用法:复选框允许用户选择或取消选择一个或多个选项。

7. RadioButton(单选按钮)

  • 属性

    • Checked:指示单选按钮是否被选中。
    • Text:单选按钮旁边显示的文本。
  • 用法:单选按钮用于在一组互斥的选项中选择一个。

8. PictureBox(图片框)

  • 属性

    • Image:要显示的图像。
  • 用法:图片框用于在窗体上显示图像。可以通过SizeMode属性调整图像的显示方式。

9. DataGridView(数据网格视图)

  • 属性

    • DataSource:数据源。
    • Rows:网格中的行。
  • 用法:DataGridView用于显示和编辑数据。可以将它绑定到数据源,也可以通过代码添加行和列。

10. TabControl(选项卡控件)

  • 属性

    • TabPages:选项卡页面的集合。
  • 用法:选项卡控件用于通过多个选项卡组织和浏览相关内容。

11. MenuStrip(菜单栏)

  • 属性

    • Items:菜单项的集合。
  • 用法:菜单栏提供了应用程序的主菜单,您可以在其中添加各种命令和功能。

12. ToolStrip(工具栏)

  • 属性

    • Items:工具栏项的集合。
  • 用法:工具栏通常包含了一系列常用命令按钮,用于快速访问功能。

13. ProgressBar(进度条)

  • 属性

    • Value:当前进度的值。
  • 用法:进度条用于显示任务的进度,例如文件下载、安装过程等。

14. DateTimePicker(日期时间选择器)

  • 属性

    • Value:选择的日期和时间。
  • 用法:日期时间选择器允许用户选择日期和时间。

15. TrackBar(滑动条)

  • 属性

    • Value:滑动条的当前值。
  • 用法:滑动条允许用户通过拖动滑块来选择一个范围内的值。

这些控件的属性和方法是它们的核心功能。您可以在设计时或者在代码中使用这些属性和方法来定制控件的行为和外观,以满足您的需求。

这里,也只是对以上控件的简单介绍,每个控件还有很多属性和方法,具体需要我们在使用中,再详细查询,或者需要用到某样功能时,再反查哪些控件能实现这个功能。因我们核心是讲Web、小程序、公众号等实现。因此,这里对Windows应用程序不再进行详细讲解。接下来会接入Web的教学

这里讲Windows应用程序的生成,是因为在未来我们极有可能会用得上。比如我在实现分库分表中,就会使用应用程序去批量建100*100个库表。又或者,使用应用程序,给我的某个网站批量导入一些初始数据。这些能力,做在Web中也可以,但调试相对没那么方便,需要生成后,打开浏览器进行访问,而Windows应用程序可以直接使用。而且因为是临时使用的,用过一次可能就不用了,所以我会生成一个临时的Windows应用程序,所有临时代码在这进行调试

感兴趣的同学辛苦 关注/点赞 ,持续分享逻辑、算法、管理、技术、人工智能相关的文章。

有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。
或关注博主免费专栏【程序员宝典--常用代码分享】里面有大量面试涉及的算法或数据结构编程题。

博主其它经典原创:《管理心得--如何高效进行跨部门合作》,《技术心得--如何成为优秀的架构师》、《管理心得--如何成为优秀的架构师》、《管理心理--程序员如何选择职业赛道》,及
《C#实例:SQL如何添加数据》,《C#实战分享--爬虫的基础原理及实现》欢迎大家阅读。

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

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

相关文章

MySQL 命令总结篇-思维导图

一些常用命令以思维导图形式总结在这里了&#xff0c;掌握这些进行MySQL基本操作绝对没问题&#xff0c;加油&#xff01;友友们可以根据这些思维导图进行知识总结。 目录 一、快速上手 二、SQL 语句分类&#xff08;DDL、DML、DQL、DCL&#xff09; 三、数据类型 四、约束…

探索AI去衣技术中的反射应用

在当今数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展已经渗透到了我们生活的方方面面。其中&#xff0c;图像处理和计算机视觉作为AI的重要分支&#xff0c;正不断推动着创新应用的边界。今天&#xff0c;我们要探讨的是一个颇具争议但又技术上颇为有…

[Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解

目录 0.子序列 vs 子数组1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.摆动序列1.题目链接2.题目链接3.代码实现 0.子序列 vs 子数组 子序列&#xff1a; 相对顺序是跟源字符串/数组是一致的但是元素和元素之间&#xff0c;在源字符串/数组中可以是不连续的一般时间…

金融行业数字化上云及信创改造过程中的一些问题及解决方案|合集①

Q&#xff1a;对金融机构来讲&#xff0c;什么是一切业务运行的前提&#xff1f; 金融机构的业务连续性对系统的稳定性要求极高。任何系统故障都可能导致严重的业务中断和经济损失。因此&#xff0c;金融机构需要IT基础架构能够提供高稳定性的服务&#xff0c;确保业务的连续运…

Android Display Graphics #1 整体框架介绍一

软件基础 Android的framework层提供了一系列的图像渲染API&#xff0c;可绘制2D和3D。简单理解就是上层开发APP的小伙伴提供了接口&#xff0c;开发者可以直接显示对应的自己内容。但如果掌握了Display底层逻辑再写上层app&#xff0c;会有掌控力&#xff0c;出问题可以根据lo…

iOS自动连接已知Wi-Fi功能的实现

首先需要在配置文件申请的时候将hotspot勾选上&#xff0c;之后还要在x-code里添加对应的配置&#xff0c;由于我们并没有用到获取设备周边Wi-Fi的功能&#xff0c;所以就没申请相关权限 相关连接Wi-Fi代码如下&#xff1a; #import <NetworkExtension/NetworkExtension.h&…

探索k8s集群的存储卷 emptyDir hostPath nfs

目录 一 含义 查看支持的存储卷类型 emptyDir存储卷 1.1 特点 1.2 用途 1.3部署 二、hostPath存储卷 一 含义 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重…

FreeRTOS【12】队列集使用

1.开发背景 基于以上的章节&#xff0c;了解了 FreeRTOS 多线程间的信号量、队列的使用&#xff0c;已经满足了日常使用场景。这个篇章要介绍的是队列集&#xff0c;实际上队列的升级版&#xff0c;存储信号量和队列等的触发事件。 队列集在实际的开发项目中应用相对比较少&…

chap4 simple neural network

全连接神经网络 问题描述 利用numpy和pytorch搭建全连接神经网络。使用numpy实现此练习需要自己手动求导&#xff0c;而pytorch具有自动求导机制。 我们首先先手动算一下反向传播的过程&#xff0c;使用的模型和初始化权重、偏差和训练用的输入和输出值如下&#xff1a; 我…

达梦数据库写文件的方式探索

0x01 前沿 这篇文章整体算是《达梦数据库手工注入笔记》的续集&#xff0c;达梦作为国内优秀的信创数据库&#xff0c;在关基单位中拥有越来越大的用户使用量。 通过SQL注入来写文件一直以来都是SQL注入漏洞深入利用的一种方式&#xff0c;对于不同的数据库通常写文件的方式也是…

刷代码随想录有感(86):贪心算法——跳跃游戏II(最小跳跃次数)

题干&#xff1a; 代码&#xff1a; class Solution { public:int jump(vector<int>& nums) {if(nums.size() 1)return 0;int curcover 0;int nextcover 0;int res 0;for(int i 0; i < curcover; i){nextcover max(i nums[i], nextcover);if(i curcover …

二叉树的链式存储

目录 1.二叉树的概念和性质2.二叉树的链式存储2.1二叉树的遍历2.1.1前中后遍历2.1.2层次遍历 2.2求节点的个数2.3求叶子节点的个数2.4求第k层节点个数2.5二叉树的销毁2.6怎样通过前序遍历构建二叉树2.7判断是否是满二叉树 1.二叉树的概念和性质 一&#xff0c;概念 1.五种形态…

掌握 JavaScript 基本输出方法

掌握 JavaScript 基本输出方法 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 JavaScript 是一种强大且灵活的编程语言&#xff0c;广泛用于 Web 开发。通过 JavaScript&#xff…

YOLOV8训练自己的数据集图文实战,包含voc数据集处理代码

yolov8官方链接: link 本文章是以labelimg标注好的voc数据集为基础,通过转换格式训练模型, 一,安装 pip install ultralyticsor pip install githttps://github.com/ultralytics/ultralytics.gitmainlink 二,数据集准备 数据集格式如下 ├── ultralytics └── datase…

RocketMq broker源码解析

broker 集群工作流程 NameSrv启动成功后&#xff0c;等待broker、Consumer和producer启动后也与NameSrv保持长连接, NameSrv相当于是路由控制中心。启动broker, broker与所有的NameSrv建立长连接, broker&#xff0c;通过定时线程定时向NameSrv发送心跳&#xff0c;broker信息…

LightDB pro*c迁移指南(游标模块)

文章目录 一、不使用SQLDA描述符范围的游标操作1.1 oracle 案例1.1.1 使用游标获取数据1.1.2 对于fetch结果集怎么去利用 1.2 LightDB 案例1.2.1 使用游标获取数据1.2.2 对于fetch结果集怎么去利用 3 总结&#xff1a;不同项 二、使用SQLDA描述符范围的游标操作2.1 Oracle样例2…

KMPlayer v2024.4.25.13 官方版 (万能播放器)

前言 KMPlaye通过各种插件扩展KMP可以支持层出不穷的新格式。KMPlaye强大的插件功能&#xff0c;直接从Winamp继承的插件功能&#xff0c;能够直接使用Winamp的音频&#xff0c;输入&#xff0c;视觉效果插件&#xff0c;而通过独有的扩展能力&#xff0c;只要你喜欢&#xff…

webman-admin多图上传预览和删除

前言 在webmen文档和论坛中都没找到多图上传的示例&#xff0c;自己找了一个&#xff0c;整合了一下凑合用 insert页面 引入css <link rel"stylesheet" href"/app/admin/admin/css/muti-upload.css" />muti-upload.css内容如下 .uploader-list .ha…

微信小程序学习

04.认识小程序项目的基本组成结构 把allow改成disallow,表示所有的页面不被微信进行索引。 比如修改首页的上面栏颜色

自制数据#国家2000投影带划分范围shp(高斯克吕格 3°/6°分带)

国家2000投影分带范围&#xff08;3&#xff09; https://www.123pan.com/s/lqEljv-xvCHA.html 国家2000投影分带范围&#xff08;6&#xff09; https://www.123pan.com/s/lqEljv-xvCHA.html 声明&#xff1a;转载此文不为商业用途。文字和图片版权归原作者所有&#xff0c;…