FotoVision学习手记(3)

简介:
200100301.JPG

AboutForm十分简单,重写了继承自System.Windows.Forms.Form的OnLoad方法,而不采用AboutForm_Load来响应窗体的Load事件。

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Diagnostics;
using System.Reflection;

namespace PhotoVision
{
    /// <summary>
    /// AboutForm 的摘要说明。
    /// </summary>
    public class AboutForm : System.Windows.Forms.Form
    {
        private class Consts
        {
            public const String CompanyLink = "http://phinecos.cnblogs.com/";//开发者网站
        }
        Windows 窗体设计器生成的代码

        private void buttonOk_Click(object sender, System.EventArgs e)
        {//关闭“关于”窗体
            this.Close();
        }

        protected override void OnLoad(System.EventArgs e)
        {//重写了OnLoad方法

            base.OnLoad(e);//引发基类的Load事件

            //更新版本信息
            string delimStr = ".";
            char [] delimiter = delimStr.ToCharArray();//分割符

            String[] version = Application.ProductVersion.Split(delimiter);//分割版本号信息
            this.labelVersion.Text = String.Format("版本号: {0}.{1}.{2}",version[0],version[1],version[2]);

            //获取此应用程序使用的程序集列表

            AssemblyName[] others = System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies();
            foreach(AssemblyName aName in others)
            {
                this.listAssemblies.Items.Add(String.Format("{0} ({1})",aName.Name,aName.Version.ToString()));
            }

            //图片的存放位置
            this.textPhotoLocation.Text = Global.DataLocation;

        }

        private void linkCompany_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
        {
            try
            {//启动浏览器
                this.linkCompany.LinkVisited = true;
                System.Diagnostics.Process.Start(Consts.CompanyLink);
            }
            catch(System.Exception ex)
            {
                Trace.WriteLine(ex.Message.ToString());
            }
        }
    }
}


其中,在获取图片的存放位置时使用了一个全局信息类Global。这是一个静态的不可继承的类,提供了很多供其他类读取和修改的全局信息,例如进度的执行情况,图片操作的列表和从应用程序配置文件中读取的配置信息等等。这些全局信息通过Global类提供的静态的公有属性和公有函数来进行访问。
 
下面是AboutForm里用到的Global的属性:

    /// <summary>
    /// Global 的摘要说明。
    /// </summary>
    public sealed class Global
    {
        private Global()
        {//构造函数私有使得类成为静态类
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        public static  String DataLocation
        {//获取指向由指定枚举标识的系统特殊文件夹的路径,其中"Personal"指定用作文档的公共储存库的目录。
            get
            {
                return System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Personal),System.Windows.Forms.Application.ProductName);
            }
        }
    }


到这里为止,系统里边缘无关的信息都已经了解清楚了,接下来就要开始探索系统中最吸引人的地方---自定义控件和各种面板组件,最后是事件的反升处理(子控件将事件通知给父控件处理),我们会看到就好比是冒泡一样,层层上传事件,这更是系统的精华所在了,此外,GDI+操作更是不可错过的精彩。



本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2006/10/03/520493.html,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
存储 Kubernetes 持续交付
k8s学习
【10月更文挑战第1天】
111 4
|
3月前
|
Linux
RISCV学习
RISCV学习
|
7月前
|
机器学习/深度学习 人工智能 算法
【C/C++】C/C++编程——为什么学习 C++?
当提到C++的时候,很多人会觉得语法复杂、学习曲线陡峭,并且好像与C语言还有点"纠缠不清"。尽管如此,C++仍然是当今世界上最受欢迎和最有影响力的编程语言之一。特别是在当今快速发展的人工智能(AI)领域,尤其是在大模型技术的兴起背景下,学习C++语言对于从事相关技术研究和开发的人员来说仍然具有重要意义。
52 2
|
分布式计算 架构师 前端开发
IT学习视频
一、架构师: N学教育 N学教育P7架构师|价值14999元课程由一线大厂资深架构师(阿里 P8+)进行主讲。业内首次将分布式架构全部技术点串联,并结合大厂真实案例实践讲解,将后端架构技术全面系统的展现,帮助同学们从全局视角掌握分布式架构设计方法,成为一名合格的架构师。他们用名师+好课来改变世界,打破业界严重缺乏顶层架构思维且仅靠疯狂堆叠知识点常见做法,初心不变,让每个人持续提升职业能力!让每个程序人获得抵御寒冬的能力!
89 0
|
C++
C++学习之从C到C++
C++学习之从C到C++
129 1
C++学习之从C到C++
|
机器学习/深度学习 并行计算 Java
今后的学习计划
今后的学习计划
110 0
|
网络协议 前端开发 Windows
学习分享系列(一):记日常学习中遇到的两个问题
学习分享系列(一):记日常学习中遇到的两个问题
学习分享系列(一):记日常学习中遇到的两个问题
|
程序员 C++ C语言
C++这么难,为什么还要学习C++呢?如何学?
C++这么难,为什么还要学习C++呢?如何学?在大多数开发或者准开发人员的认识中,C/C++ 是一门非常难的编程语言,很多人知道它的强大,但因为认为“难”造成的恐惧让很多人放弃。 这个世界本来就是残酷的,所以你不能怪C++向你展示了世界的本质 大家都觉得很难等你攀登到高峰的时候发现,原来前面还有比这更高的山峰,等着你去继续攀登。
1488 0
|
前端开发 安全 Java
|
C# 图形学 Windows