visual C#(一)带你进入C#编程世界

参考书:《 visual C# 从入门到精通》

第一部分 Visual C# 和Visual Studio 2015概述
第1章 欢迎进入C# 编程世界

文章目录

  • 1.1 开始在Visual Studio 2015环境中编程

  • 1.2 写第一个程序

  • 1.3 使用命名空间

  • 1.4创建图形应用程序

  • 1.4.1 探索通用Windows平台应用程序

    • 1.4.2 向图形应用程序添加代码

1.1 开始在Visual Studio 2015环境中编程

1.2 写第一个程序

1using System; 2 3namespace c1 4{ 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Console.WriteLine("Hello World!"); 10 Console.ReadLine();//等到用户按enter键 11 } 12 } 13} 14 15 16

1.3 使用命名空间

1.4创建图形应用程序

模板:通用Windows平台(Universal Windows Platform,UWP)。其创建的应用可以在所有的Windows设备上运行。

步骤:

  1. 创建新项目->C#->空白应用(通用Windows)
  2. 创建完成以后,在解决方案管理器中有 MainPage.xaml->MainPage.xaml.cs的C#文件。
  3. 双击MainPage.xaml,出现设计视图和代码视图
  4. 设计视图旁边容易找到工具箱标签,其中有可放到窗体上的各种组件和控件。一共有三类:常用XAML控件、所有XAML控件、常规。展开常用XAML控件。
  5. 单击TextBlock将其拖放到设计视图显示的窗体。可以单击控件来调整位置。另外可以在控件的属性窗口中调整控件的各种属性。一共控件通常有九大类别:画笔、布局、文本、外观、公共、自动化、转换、交互、杂项。如布局中的HorizontalAlignment和VerticalAlignment属性,文本中的TextWrapping属性。
  6. 在属性窗口的文本中,将FontSize属性修改为20pt(输入20pt回车)。pt表明单位是磅,1磅等于1/72英寸。可以看到XAML窗格的代码中出现了“FontSize=26.667”,属性窗口中的FontSize属性回车后也变为26.667px。就是磅换成像素之后的约值。
  7. 在XAML窗格中编辑Text属性为"Please enter your name"。或者在属性窗口公共的Text属性。
  8. 从工具箱中将TextBox控件拖放到窗体上,放到TextBlock控件的下方。
  9. 在设计视图中改变TextBox控件的位置和大小使其和TextBlock控件对齐。
  10. 在TextBox的属性窗口的顶部,将名称属性改为 userName
  11. 将工具箱中的Button控件拖放到窗体,定位到TextBox右侧与其底部水平对齐。
  12. 将Button控件的名称属性改为 ok,将Content属性改为OK
  13. 在生成菜单选择 生成解决方案。
  14. 在调试菜单选择开始调试。程序会显示如下窗体。

在这里插入图片描述

1.4.1 探索通用Windows平台应用程序

点开MainPage.xaml.cs文件,出现的代码如下:

1using System; 2using System.Collections.Generic; 3using System.IO; 4using System.Linq; 5using System.Runtime.InteropServices.WindowsRuntime; 6using Windows.Foundation; 7using Windows.Foundation.Collections; 8using Windows.UI.Xaml; 9using Windows.UI.Xaml.Controls; 10using Windows.UI.Xaml.Controls.Primitives; 11using Windows.UI.Xaml.Data; 12using Windows.UI.Xaml.Input; 13using Windows.UI.Xaml.Media; 14using Windows.UI.Xaml.Navigation; 15 16// https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x804 上介绍了“空白页”项模板 17 18namespace c_1_4 19{ 20 /// <summary> 21 /// 可用于自身或导航至 Frame 内部的空白页。 22 /// </summary> 23 public sealed partial class MainPage : Page 24 { 25 public MainPage() 26 { 27 this.InitializeComponent(); 28 } 29 30 private void TextBlock_SelectionChanged(object sender, RoutedEventArgs e) 31 { 32 33 } 34 } 35} 36 37 38

发现代码中除了大量的using指令,就只有MainPage类的定义。MainPage类包含一个构造器来调用InitializeComponent方法。类包含的方法实际要多的多。大多数代码是根据窗体的XAML描述来自动生成的,已自动隐藏了。这些代码包括创建和显示窗体,创建和定位窗体上的各个控件等等。

另外发现在解决方案资源管理器中还有另一个源代码文件,在App.xaml下的App.xaml.cs文件。在UWP应用中,App.xaml文件提供了应用程序的入口。代码如下:

1using System; 2using System.Collections.Generic; 3using System.IO; 4using System.Linq; 5using System.Runtime.InteropServices.WindowsRuntime; 6using Windows.ApplicationModel; 7using Windows.ApplicationModel.Activation; 8using Windows.Foundation; 9using Windows.Foundation.Collections; 10using Windows.UI.Xaml; 11using Windows.UI.Xaml.Controls; 12using Windows.UI.Xaml.Controls.Primitives; 13using Windows.UI.Xaml.Data; 14using Windows.UI.Xaml.Input; 15using Windows.UI.Xaml.Media; 16using Windows.UI.Xaml.Navigation; 17 18namespace c_1_4 19{ 20 /// <summary> 21 /// 提供特定于应用程序的行为,以补充默认的应用程序类。 22 /// </summary> 23 sealed partial class App : Application 24 { 25 /// <summary> 26 /// 初始化单一实例应用程序对象。这是执行的创作代码的第一行, 27 /// 已执行,逻辑上等同于 main() 或 WinMain()。 28 /// </summary> 29 public App() 30 { 31 this.InitializeComponent(); 32 this.Suspending += OnSuspending; 33 } 34 35 /// <summary> 36 /// 在应用程序由最终用户正常启动时进行调用。 37 /// 将在启动应用程序以打开特定文件等情况下使用。 38 /// </summary> 39 /// <param name="e">有关启动请求和过程的详细信息。</param> 40 protected override void OnLaunched(LaunchActivatedEventArgs e) 41 { 42 Frame rootFrame = Window.Current.Content as Frame; 43 44 // 不要在窗口已包含内容时重复应用程序初始化, 45 // 只需确保窗口处于活动状态 46 if (rootFrame == null) 47 { 48 // 创建要充当导航上下文的框架,并导航到第一页 49 rootFrame = new Frame(); 50 51 rootFrame.NavigationFailed += OnNavigationFailed; 52 53 if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 54 { 55 //TODO: 从之前挂起的应用程序加载状态 56 } 57 58 // 将框架放在当前窗口中 59 Window.Current.Content = rootFrame; 60 } 61 62 if (e.PrelaunchActivated == false) 63 { 64 if (rootFrame.Content == null) 65 { 66 // 当导航堆栈尚未还原时,导航到第一页, 67 // 并通过将所需信息作为导航参数传入来配置 68 // 参数 69 rootFrame.Navigate(typeof(MainPage), e.Arguments); 70 } 71 // 确保当前窗口处于活动状态 72 Window.Current.Activate(); 73 } 74 } 75 76 /// <summary> 77 /// 导航到特定页失败时调用 78 /// </summary> 79 ///<param name="sender">导航失败的框架</param> 80 ///<param name="e">有关导航失败的详细信息</param> 81 void OnNavigationFailed(object sender, NavigationFailedEventArgs e) 82 { 83 throw new Exception("Failed to load Page " + e.SourcePageType.FullName); 84 } 85 86 /// <summary> 87 /// 在将要挂起应用程序执行时调用。 在不知道应用程序 88 /// 无需知道应用程序会被终止还是会恢复, 89 /// 并让内存内容保持不变。 90 /// </summary> 91 /// <param name="sender">挂起的请求的源。</param> 92 /// <param name="e">有关挂起请求的详细信息。</param> 93 private void OnSuspending(object sender, SuspendingEventArgs e) 94 { 95 var deferral = e.SuspendingOperation.GetDeferral(); 96 //TODO: 保存应用程序状态并停止任何后台活动 97 deferral.Complete(); 98 } 99 } 100} 101 102 103

现在需要注意的是OnLaunched方法,该方法在应用程序启动时运行,它的代码导致应用程序新建一个Frame对象,在这个frame中显示MainPage窗体并激活它。

1.4.2 向图形应用程序添加代码

->为OK按钮写代码

  1. 双击MainPage.xmal在设计视图中打开。

  2. 单击OK按钮选定它。

  3. 在属性窗口中单击“选定元素的事件处理程序”按钮(闪电图标)。在这里插入图片描述

  4. 在Click事件旁边的文本框中输入okClick并回车。此时会打开MainPage.xaml.cs,发现在MainPage类中自动添加okClick方法。如下:

1 private void okClick(object sender, RoutedEventArgs e) 2 { 3 4 } 5 6
  1. 在代码顶部添加 using Windows.UI.Popups;
  2. 在okClick方法中添加以下代码:MessageDialog msg = new MessageDialog("Hello, " + userName.Text); msg.ShowAsync();,这样单击ok按钮将运行以上代码。
  3. 点击MainPage.xaml回到设计视图,在XMAL中查看Button元素:<Button Content="OK" Margin="665,184,0,0" VerticalAlignment="Top" Height="71" Width="60" Click="okClick"/>
  4. 调试->开始调试。
  5. 文本框中输入自己名字单击ok按钮会出现如图结果的一条消息。

在这里插入图片描述

代码交流 2021