关注我,持续分享逻辑思维&管理思维&面试题; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;
博主在互联网大厂深耕近二十年,从一线码农做起,到人工智能公司副总裁。希望把过往经验总结出来,帮助到更多同学。有兴趣可关注博主后加个人微信(平台规定文章中不能贴联系方式,需先关注博主,再加微信),后续一起交流学习。
本专栏以实战为主,轻理论。如果哪里有不太懂的,可以随时和我交流。
-------------------------------------正文----------------------------------------
目录
一、新建解决方案
二、新建项目
三、项目启动逻辑代码
四、添加恶搞按钮及处理逻辑
五、添加按钮闪烁特效
六、运行程序的几种方法
七、控件及用法
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#实战分享--爬虫的基础原理及实现》欢迎大家阅读。