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

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

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

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

1.2 写第一个程序

using System;

namespace c1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Console.ReadLine();//等到用户按enter键
        }
    }
}

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文件,出现的代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x804 上介绍了“空白页”项模板

namespace c_1_4
{
    /// <summary>
    /// 可用于自身或导航至 Frame 内部的空白页。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private void TextBlock_SelectionChanged(object sender, RoutedEventArgs e)
        {

        }
    }
}

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

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

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace c_1_4
{
    /// <summary>
    /// 提供特定于应用程序的行为,以补充默认的应用程序类。
    /// </summary>
    sealed partial class App : Application
    {
        /// <summary>
        /// 初始化单一实例应用程序对象。这是执行的创作代码的第一行,
        /// 已执行,逻辑上等同于 main() 或 WinMain()。
        /// </summary>
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

        /// <summary>
        /// 在应用程序由最终用户正常启动时进行调用。
        /// 将在启动应用程序以打开特定文件等情况下使用。
        /// </summary>
        /// <param name="e">有关启动请求和过程的详细信息。</param>
        protected override void OnLaunched(LaunchActivatedEventArgs e)
        {
            Frame rootFrame = Window.Current.Content as Frame;

            // 不要在窗口已包含内容时重复应用程序初始化,
            // 只需确保窗口处于活动状态
            if (rootFrame == null)
            {
                // 创建要充当导航上下文的框架,并导航到第一页
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: 从之前挂起的应用程序加载状态
                }

                // 将框架放在当前窗口中
                Window.Current.Content = rootFrame;
            }

            if (e.PrelaunchActivated == false)
            {
                if (rootFrame.Content == null)
                {
                    // 当导航堆栈尚未还原时,导航到第一页,
                    // 并通过将所需信息作为导航参数传入来配置
                    // 参数
                    rootFrame.Navigate(typeof(MainPage), e.Arguments);
                }
                // 确保当前窗口处于活动状态
                Window.Current.Activate();
            }
        }

        /// <summary>
        /// 导航到特定页失败时调用
        /// </summary>
        ///<param name="sender">导航失败的框架</param>
        ///<param name="e">有关导航失败的详细信息</param>
        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
        {
            throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
        }

        /// <summary>
        /// 在将要挂起应用程序执行时调用。  在不知道应用程序
        /// 无需知道应用程序会被终止还是会恢复,
        /// 并让内存内容保持不变。
        /// </summary>
        /// <param name="sender">挂起的请求的源。</param>
        /// <param name="e">有关挂起请求的详细信息。</param>
        private void OnSuspending(object sender, SuspendingEventArgs e)
        {
            var deferral = e.SuspendingOperation.GetDeferral();
            //TODO: 保存应用程序状态并停止任何后台活动
            deferral.Complete();
        }
    }
}

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

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

->为OK按钮写代码

  1. 双击MainPage.xmal在设计视图中打开。
  2. 单击OK按钮选定它。
  3. 在属性窗口中单击“选定元素的事件处理程序”按钮(闪电图标)。在这里插入图片描述
  4. 在Click事件旁边的文本框中输入okClick并回车。此时会打开MainPage.xaml.cs,发现在MainPage类中自动添加okClick方法。如下:
        private void okClick(object sender, RoutedEventArgs e)
        {

        }
  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按钮会出现如图结果的一条消息。
    在这里插入图片描述
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual C# 2010新功能简介 动态支持(Dynamic Support) 通过Dynamic这一新类型,Visual C# 2010对后期绑定到动态类型提供了支持。这一附加能来了许多新应用,包括简化访问COM API如Office Automation API,动态API如IronPython,以及HTML DOM。 Office编程能力 通过额外的命名参数和可选参数,动态类型,索引属性和可选ref修改器,访问COM接口包括Office Automation API的能力被大幅加强。 类型等价支持(Type Equivalence Support) 相比从主互操作程序集(Primary Interop Assembly)中导入类型信息,现在可以部署一款有内嵌类型信息的应用。通过内嵌的类型信息,应用可在运行时间内使用类型而无需参考运行程序集。如果运行程序集发布了多种版本,那么包含内嵌类型信息的应用可以工作在多版本下而无需重新编译。 协变与逆变(Covariance and Contravariance) 相比泛型参数,协变能使用更具导出性的类型。而逆变则能使用更少导出性的类型。这就允许隐式变换定义类关键字来执行不同接口并通过不同的委托类型提供更灵活的运算方式。不同接口和委托可通过使用新的in和out语言关键字被创建。.NET Framework也可对某些现有泛型接口和委托来不同的支持,包括IEnumerable<(Of <(T>)>)接口和Func<(Of <(TResult>)>) 与 Action<(Of <(T>)>) 委托。 新的命令行选项 /langversion命令行选项可让编译器接受只在特定C#版本中有效的语法。 /appconfig编译器选项可让C#应用指定程序集的应用配置文件位置。 Visual C# 集成了开发环境。以下部分对Visual Studio集成开发环境(IDE)的加强进行了描述。 调用层次结构(Call Hierarchy) 调用层次结构能通过你的代码进行导航并显示以下信息: · 到所选方式、属性和构造函数的所有调用。 · 接口成员的所有执行。 · 虚方法和抽象方法的所有覆盖。 这能让你更好地理解代码流动并评估代码变更的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值