C#入门详解_02_初识各类应用程序(学习方法;console;winform;WPF;C#语言还可以进行的网站开发、平板、手机程序开发方法)

本节主要介绍各种可以用C#编写的应用程序。

1. 编程学习的捷径

  • 编程不是“学”出来的,而是“练”出来的
  • 在反复应用中积累,忽然有一天就会“顿悟
  • 学习原则
    • 从感观到原理:先写程序,不管原理,多写几遍,再看原理会顿悟
    • 从使用别人的到创建白己的
    • 必需亲白动手
    • 必需学以致用、紧跟实际工作:考虑时间投入及产出,实际工作中用不到的,作为知识储备即可
    • 追求实用,不搞“学院派”:学习不是为了考试,是为了工作

2. 编写我们的第一个程序–Hello,World!

VS在管理代码的时候解决方案是最高的级别,在一个solution中会包含一个或者多个project。

比较形象的比喻:
有一个汽车经销商,想请你做一个宣传自己商店的软件,让大家知道卖的是什么汽车,价格等信息,为了解决这个需求,你需要提供一个完整的解决方案,也就是solution。
我们知道处理大问题的时候,需要将其划分为小问题,将小问题一个个的解决,逐个击破,将解决方案给出之后,发现有具体的问题需要解决,比如数据存到哪,数据怎么向外界发布,都有谁来响应这些数据,这些都是具体问题,针对某一个具体问题,我们需要使用project来解决,针对具体的问题使用具体的技术。

以下是使用数据库进行不同技术project的案例,当整体作为一个solution的时候,不同技术都有对应的模板可以参考。
在这里插入图片描述

VS高级版本支持的模板就更多,支持的技术也就更多,对于一般用户来说,professor版本的就已经足够了。

  • Solution解决方案与Project项目
    • Solution是针对客户需求的总的解决方案。举例:汽车经销商需要一套销售软件
    • Project解决具体的某个问题
  • Project模板(对比不同VS版本)
  • 分别编写Console、WPF、Windows Forms的Hello World程序
  • 初学编程时很重要的两点
    • 不要怕见到自己看不懂的东西
    • 要能跟着操作,一遍一遍地练习,为的是熟悉手里的工具、培养感觉

使用十种不同的c#语言技术来编写“Hello,World!”程序,让大家都能领略C#的功能。下面打了"*"号的技术都是今年比较新,市场比较好的技术。

2.1 Console-控制台

命令行界面,程序简单,一般都是写给内部用户,有一定计算机基础的。
在VS中“文件”->“新建”->“项目”,选择“控制台应用”项目模板,VS会自动创建一个同名的solution(solution的名字是可以修改的)。现在使用“控制台应用”技术解决想要在屏幕上打印出“hello world!”字符串,重新命名
在这里插入图片描述
MySolution解决方案中有一个ConsoleHelloWorld的project,project中包含若干的源文件,其中有一个Program.cs,注意C#文件默认是使用.cs来作为扩展名。
在这里插入图片描述

当你遇到一些你不熟悉的地方不用害怕,把精力集中在今天的操作上,今天的目的就是在命令行上输出“hello world ”字符串。

如果直接运行以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleHelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("hello world !");
        }
    }
}

代码会一闪而过,可以在“调试”中选择如下,这样就可以实现交给用户一样的运行效果
在这里插入图片描述
运行结果如下:
在这里插入图片描述

2.2 Windows Forms (Old)

Windows Forms是一项比较老的技术,更新的技术是WPF。
在这里插入图片描述

  • winform给我们准备了一个空的窗口,窗口编程的时候术语为窗体,有了form之后直接点击“运行”其实就可以运行- 了,左侧为“工具箱”,拖入一个“TextBox”、“Button”控件。
  • 修改控件属性,属性包括了控件上的名字、尺寸、显示的文字信息
  • 在编程中尽量给每一个控件起一个有意义的名字,不要叫button1等,
    在这里插入图片描述
    修改完名称之后,我们需要看一个事件的东西,点击按钮控件,在属性中找一个闪电的标识符,表示事件(按钮可以通知程序,我这发生了什么事,你这个程序需要进行怎么样的响应),此处就是用户点击按钮之后就会发生click的事件,click事件发生之后需要程序也就是相应的方法进行响应。
    在这里插入图片描述

双击click事件之后,自动生成一个方法,在其中输入代码,实现如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinFormHelloWorld
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnSayHello_Click(object sender, EventArgs e)
        {
            textBoxShowHello.Text = "hello world !";
        }
    }
}

运行之后:点击按钮就会在 textBoxShowHello中显示如下
在这里插入图片描述

2.3 WPF(Windows Presentation Foundation)

在这里插入图片描述
窗体部分没有什么不同,特别的是下边多出了一些像HTML的代码,设计师可以参与到界面的开发中,这是与winform中需要拖入控件的区别,采用HTML的代码可以实现设计师美化的界面。

假如设计师想要给界面设计一个渐变色可以按照以下方式
在这里插入图片描述
如果是在winform中就变得十分复杂,需要对属性值一点点进行修改,WPF的XAML类似于HTM代码,设计师一般都懂,如果我们觉得设计的效果不错,可以将其保存到资源词典中,别的程序也可以使用,微软平板和手机的开发和WPF很像,知识迁移十分方便。

一旦学习过winform开发后可以发现,后台的开发和WPF是很像的

首先通过属性更改控件名称及控件内默认显示的信息,在ZAML中也会进行实时的更新
在这里插入图片描述
点击右侧“事件”,双击Click,自动添加事件方法
在这里插入图片描述
方法内添加代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfHelloWorld
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ButtonSayHello_Click(object sender, RoutedEventArgs e)
        {
            textBoxShowHello.Text = "hello world !";
        }
    }
}

运行结果:
在这里插入图片描述

2.4 高版本VS进行C#编程(了解c#还可以做什么)

2.4.1 ASP.NET Web Forms (Old)

ASP.NET Web Forms也就比较老的技术,与winform是一个阶段出现的,目前比较新的技术就是下面要介绍的ASP.NET MVC(Model-View-Controller),这个是一个网络应用程序,相当于做网站。

启动VS Ultimate
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在HTML中添加代码
在这里插入图片描述
点击运行:网页上输出“hello world !”
在这里插入图片描述
将网页进行发布
在这里插入图片描述
论坛、网站等就有可能使用的是该技术

2.4.2 ASP.NET MVC(Model-View-Controller)*

此技术是ASP.NET Web Forms的更新技术,MVC实际上是程序开发的一个架构,能够让程序员将不同种类的代码分开放在不同的文件中,使用ASP.NET Web Forms在程序比较大的时候维护就不太方便,MVC技术保证程序在很大的情况下依然结构清晰,维护方便。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述
同样可以进行publish
在这里插入图片描述

2.4.3 Windows Store Application**

Windows Store Application就是给平板电脑写的程序。
在这里插入图片描述
双击“MainPage”可以发现界面与wpf是很相近的
在这里插入图片描述
同样是在ToolBox中拖入控件,修改属性,切换到模拟器
在这里插入图片描述
双击按钮的Click事件来创建事件,添加相应的代码,运行之后结果如下:
在这里插入图片描述

2.4.4 Windows Phone Application*

在这里插入图片描述
在这里插入图片描述
打开后发现与wpf的界面很像,与其不同的地方是,其内部预先写了一些内容,将其删除后,拖入控件,更改属性,创建事件
在这里插入图片描述
选择模拟器(屏幕的分辨率会有差异)
在这里插入图片描述
如果你有一步windows phone手机之后,注册一个开发者账号,手机连接机器之后就可以将其部署到手机进行调试和使用。以下是 在连接手机的情况下进行部署的方法
在这里插入图片描述

2.4.5 Cloud (windows Azure)

微软云计算上的一个hello world 程序的开发,云计算是未来发展的方向。
在这里插入图片描述
在云平台上可以建网站,写一些服务性的东西,此处选择架网站
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
界面基本与ASP.NET MVC(Model-View-Controller)的基本一样,使用一样的方法来创建代码。(操作一样)

运行时需要启动云平台的模拟器,需要Admin的权限,选择以“管理员身份运行”重启VS,重新加载程序,右上角显示是在管理员权限下运行。
在这里插入图片描述
运行之后,云平台模拟器进行启动,云平台模拟器中显示出网站内容。

使用云平台创建的网站和ASP.NET MVC(Model-View-Controller)创建的有什么区别呢?
此时如果点击solution进行publish,可以看到界面已经不同,此时选择一个云平台的subscriptions(订阅),就可以将其直接发布到服务上去。
如果发布网站,你就需要买域名,买空间这些,微软云平台就替你将这些都给做了,只需要你订阅发布就可以了。
在这里插入图片描述

2.4.6 WF(Workflow Foundation)

也就是工作流,企业中如果在出差时申请出差费用,工作流就是先写申请,经理审批,再到财务,财务发现批准之后就将钱打到我的账户上,微软的工作流技术采用可视化的技术来实现工作流。
在这里插入图片描述
出现的编程界面中没有任何东西,先从“ToolBox”中拖入一个“WriteLine”,这相当于concole中的Writeline,并在其中写入内容,这样就完成一个工作流。(实现子啊控制台写一个hello world)
在这里插入图片描述
在这里插入图片描述

2.4.7 WCF(Windows Coinmunication Foundation)*

WCF(Windows Coinmunication Foundation)是纯网络服务,以下写一个读取数据库的service的project。
在这里插入图片描述
界面中创建了一个模板,我们需要将其进行修改,实现如果有别的程序,调用我的service就会返回“hello world !”
在这里插入图片描述
启动一个"WCF Test Client"工具(没有用户界面,纯数据服务,数据进出看不到,VS提供了这个工具可以看到数据的进出),双击"Say Hello",出现的界面相当于客户端,其中界面中点击“Invoke”,就会调用对应的函数,输出“hello world”.
在这里插入图片描述
WCF作用:假如我写了一个功能强大的计算器,我以web service的方式发不出来,那么大家都可以调用网络上的计算器,将数据给我计算完之后返给他,实现的功能十分强大。

3. 见识C#编写的各类应用程序

  • 目的1:让大家拥有辨识各类程序的“火眼金睛"
  • 目的2:让大家了解一下完成C#语言学习后的职业发展方向(你最喜欢哪种?)