掌握C#编程:30个实用小程序示例

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:C#是一种现代面向对象编程语言,广泛应用于多个领域。本资源集包含30个C#小程序示例,涵盖基础语法、数据类型、函数方法、类与对象、集合与数组、异常处理、LINQ查询、文件操作、多线程、事件与委托、GUI编程、.NET框架和异步编程等内容。这些示例旨在为初学者和经验丰富的开发者提供实践机会,帮助他们掌握C#编程基础和解决实际问题的能力。

1. C#基础语法与数据类型

在编程的世界中,C#(C Sharp)以其优雅的语法和强大的功能,成为了开发者的优选语言之一。本章,我们将从基础开始,探讨C#的关键语法和数据类型。

首先,我们要熟悉C#中的关键字,如 class namespace if 等,它们是构成C#程序的基本元素。然后,我们将探讨如何使用标识符来命名变量、方法和类。标识符的选择不仅要遵循C#的命名规则,更需要有助于代码的可读性和可维护性。

接下来,数据类型作为编程的核心,我们将详细介绍C#中的数值类型、布尔类型、字符类型和字符串类型。我们会讨论它们的特性和使用场景,并演示如何声明和初始化变量。

此外,本章还包括了如何在C#程序中使用数组和集合,以及如何高效地操作这些数据结构。你将学习到数组的声明、初始化和遍历,以及集合类如List和Dictionary的使用方法。

通过本章的学习,你将掌握C#编程的基础知识,为深入学习后续章节打下坚实的基础。

// 示例代码:变量声明和使用
int number = 42; // 声明并初始化一个整型变量
string name = "C# Programming"; // 声明并初始化一个字符串变量
bool isFun = true; // 声明并初始化一个布尔型变量

// 输出变量值
Console.WriteLine($"The number is {number}.");
Console.WriteLine($"Is programming fun? {isFun}.");
Console.WriteLine($"I love {name}!");

在上述代码中,我们声明了三种不同类型的变量,并使用 Console.WriteLine 方法输出了它们的值。这只是C#语法和数据类型的一个非常简单的入门示例。随着章节的深入,我们将逐步揭开C#的更多精彩特性。

2. C#函数与方法示例

函数和方法概念

在C#中,函数(Function)和方法(Method)通常可以互换使用。它们代表程序中的一段代码块,可以执行特定的任务,并且可以有输入参数和返回值。函数是面向过程的编程的一部分,而方法则更多地与面向对象编程联系在一起。在C#中,所有的函数都是类的一部分,因此更准确地说是方法。

定义方法

方法的定义从返回类型开始,然后是方法名、括号内的参数列表(如果有的话),最后是方法体。下面是一个简单方法的定义示例:

public int Add(int a, int b) // 返回类型为int,方法名为Add,有两个int类型的参数
{
    return a + b; // 返回两个参数的和
}

在这个例子中, Add 方法有返回类型 int ,这意味着它会返回一个整数值。方法名 Add 后跟着一对括号,括号中定义了两个名为 a b 的整数类型参数。方法体包含了实现加法逻辑的单个语句。

参数传递

C#支持值类型和引用类型参数传递。值类型参数传递时,传递的是实际值的副本;而引用类型参数传递时,传递的是实际对象的引用副本,意味着对引用类型参数的修改会影响原始对象。

返回值

方法可以通过 return 语句返回值。如果方法的返回类型不是 void ,则必须包含返回语句来返回特定类型的值。在上面的 Add 方法中,我们返回了两个参数的和。

方法重载

方法重载是指在同一个类中可以存在多个同名方法,只要它们的参数类型或参数数量不同即可。方法重载为方法的使用提供了灵活性,允许根据不同的参数类型或数量调用相同名称的方法。

public int Add(int a, int b)
{
    return a + b;
}

public double Add(double a, double b)
{
    return a + b;
}

public int Add(int a, int b, int c)
{
    return a + b + c;
}

在上述代码中, Add 方法被重载了三次,每次有不同的参数类型或数量。根据传递给 Add 方法的参数类型和数量,编译器会决定调用哪个重载版本。

方法使用实例

下面是一个使用 Add 方法的实例:

int sum = Add(5, 10); // 调用第一个Add方法,sum将会是15
double doubleSum = Add(2.5, 3.7); // 调用第二个Add方法,doubleSum将会是6.2
int sum3 = Add(1, 2, 3); // 调用第三个Add方法,sum3将会是6

方法的高级特性

在C#中,方法还可以有可选参数和命名参数,这为方法调用提供了更多的灵活性。

可选参数

可以给方法参数提供默认值,调用方法时如果没有传递该参数,则会使用默认值。

public void DisplayMessage(string message, bool includeTime = true)
{
    if (includeTime)
        Console.WriteLine($"{DateTime.Now}: {message}");
    else
        Console.WriteLine(message);
}

// 调用
DisplayMessage("Hello World!"); // 不传递includeTime参数,默认为true
DisplayMessage("Hello World!", false); // 明确传递includeTime参数为false
命名参数

在调用方法时,可以使用参数名来指定值,而不需要考虑参数的顺序。

DisplayMessage(message: "Hi, what's up?", includeTime: false);

小结

本章节通过详细的说明和实例展示了C#中方法的定义和使用,包括参数传递、返回值、方法重载以及方法的高级特性如可选参数和命名参数。通过这些基础知识,可以更有效地利用方法来构建复杂的C#程序。

3. 面向对象编程:类与对象

类与对象概念

面向对象编程(OOP)是C#编程语言中的核心概念。类是OOP的基础,它是构建对象的蓝图或模板。对象是类的实例,拥有类的属性和方法。理解类与对象是构建复杂系统和应用不可或缺的一步。

类的定义与实例化

在C#中,类使用关键字 class 进行定义。它包括属性、方法、字段和事件等成员。

public class Person
{
    // 属性
    public string Name { get; set; }
    public int Age { get; set; }

    // 方法
    public void SayHello()
    {
        Console.WriteLine("Hello, my name is " + Name);
    }

    // 构造函数
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}
  • Name Age 是公共属性,可以被外部访问和修改。
  • SayHello 是一个方法,实现了一个行为。
  • Person(string name, int age) 是一个构造函数,用于创建对象时初始化。

对象的创建和使用

在创建类的对象时,我们通常使用 new 关键字:

Person person = new Person("Alice", 30);
person.SayHello();
  • person Person 类的一个实例。
  • 使用 person.SayHello(); 调用实例方法,执行打印操作。

类的继承

继承是面向对象编程中的一个关键特性。它允许创建类的层次结构,其中派生类继承基类的字段和方法。

public class Employee : Person
{
    public string Department { get; set; }

    public Employee(string name, int age, string department) : base(name, age)
    {
        Department = department;
    }

    public void SayDepartment()
    {
        Console.WriteLine("I work in the " + Department);
    }
}
  • Employee 类继承了 Person 类的所有成员,并添加了 Department 属性和 SayDepartment 方法。

多态

多态允许我们使用基类类型的引用来指向派生类的对象,并调用合适的方法实现。在C#中,多态是通过虚方法和重写实现的。

public class Vehicle
{
    public virtual void Start()
    {
        Console.WriteLine("Vehicle is starting");
    }
}

public class Car : Vehicle
{
    public override void Start()
    {
        Console.WriteLine("Car is starting");
    }
}

// 使用
Vehicle vehicle = new Car();
vehicle.Start(); // 输出: Car is starting
  • Car 类重写了 Vehicle 类的 Start 方法。

封装

封装是隐藏对象内部的复杂性,仅暴露接口的方法。在C#中,通过使用访问修饰符实现封装。

public class BankAccount
{
    private decimal balance;

    public decimal GetBalance()
    {
        return balance;
    }

    public void Deposit(decimal amount)
    {
        if (amount > 0)
        {
            balance += amount;
        }
    }
}
  • balance 是私有字段,只能在类内部访问。
  • GetBalance Deposit 是公开方法,外部通过这些方法操作私有字段。

类与对象的高级应用

静态成员

静态成员属于类本身,而非类的任何实例。静态字段和静态方法通常用于创建不需要实例化类的对象即可使用的功能。

public class Utility
{
    public static void Log(string message)
    {
        Console.WriteLine("Log: " + message);
    }
}

// 使用
Utility.Log("Application started");
  • Log 方法是静态的,可以不需要 Utility 类的实例即可调用。

抽象类与接口

抽象类和接口是实现抽象级别的OOP概念。抽象类使用 abstract 关键字定义,不能实例化。它可以包含抽象方法和非抽象方法。

public abstract class Shape
{
    public abstract void Draw();
}

接口使用 interface 关键字定义,它声明了类必须实现的方法,但不提供方法实现。

public interface IRenderer
{
    void Render();
}

对象的比较

对象比较可以是值比较或引用比较。值比较通常比较对象的内容,而引用比较比较对象的内存地址。

public static bool AreEqual(Person p1, Person p2)
{
    if (ReferenceEquals(p1, p2)) return true;
    if (p1 is null || p2 is null) return false;
    return p1.Name == p2.Name && p1.Age == p2.Age;
}
  • ReferenceEquals 用于引用比较。
  • Equals 方法和运算符 == 可以被重载以支持值比较。

对象的序列化

对象的序列化是将对象的状态保存到存储介质中,或者通过网络传输的过程。C#提供了 System.Runtime.Serialization 命名空间,它支持对象的序列化和反序列化。

[Serializable]
public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}

// 序列化示例
User user = new User { Name = "John", Age = 30 };
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("user.data", FileMode.Create);
formatter.Serialize(stream, user);
stream.Close();
  • [Serializable] 属性标记允许对象被序列化。
  • 使用 BinaryFormatter 类对 User 对象进行序列化操作。

总结

类和对象是构成面向对象编程的基础。本章深入探讨了类的定义、对象的创建、继承、多态、封装等核心概念,并通过实例展示了如何利用这些特性来实现复杂的功能和解决方案。通过静态成员、抽象类、接口以及对象的比较和序列化等高级技术,C#程序员可以编写出结构清晰、易于维护和扩展的应用程序。下一章将详细介绍C#中的集合与数组应用,探索更多数据管理的高效工具和方法。

4. C#集合与数组应用

4.1 集合类型简介

在C#中,集合是存储一组元素的容器,这些元素可以是任意数据类型。集合是编程中常用的数据结构,用于管理数据集合。C# 提供了丰富的集合类,主要分为接口和类两大类。接口集合如 IEnumerable<T> ICollection<T> IList<T> 等,而类集合如 List<T> Dictionary<TKey, TValue> HashSet<T> 等。

4.1.1 列表(List)

列表是最常用的集合类型之一。 List<T> 类是一个泛型集合,允许动态地添加和移除元素,它实现了 IList<T> 接口。列表元素可以通过索引直接访问。

使用列表
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        numbers.Add(6); // 添加元素到列表末尾
        numbers.Insert(2, 25); // 在指定索引处插入元素
        numbers.RemoveAt(0); // 移除指定索引处的元素
        Console.WriteLine(numbers.Contains(25)); // 检查列表是否包含指定元素
        foreach (int number in numbers)
        {
            Console.WriteLine(number);
        }
    }
}

4.1.2 字典(Dictionary)

字典是一种存储键值对的数据结构。在C#中, Dictionary<TKey, TValue> 类实现了 IDictionary<TKey, TValue> 接口。字典提供了通过键快速访问值的能力。

使用字典
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<string, int> ages = new Dictionary<string, int>
        {
            {"Alice", 24},
            {"Bob", 27}
        };
        ages.Add("Charlie", 32); // 添加新的键值对
        if (ages.TryGetValue("Alice", out int aliceAge))
        {
            Console.WriteLine($"Alice's age is {aliceAge}.");
        }
        foreach (KeyValuePair<string, int> pair in ages)
        {
            Console.WriteLine($"{pair.Key} is {pair.Value} years old.");
        }
    }
}

4.1.3 队列(Queue)

队列是一种先进先出(FIFO)的数据结构。 Queue<T> 类实现了 IEnumerable<T> ICollection ISerializable 接口。

使用队列
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Queue<string> queue = new Queue<string>();
        queue.Enqueue("First"); // 入队操作
        queue.Enqueue("Second");
        queue.Enqueue("Third");
        Console.WriteLine(queue.Dequeue()); // 出队操作,移除并返回队列的前端元素
        foreach (string s in queue)
        {
            Console.WriteLine($"Queue: {s}");
        }
    }
}

4.2 数组

数组是一种数据结构,用于存储固定大小且类型相同的元素序列。在C#中,数组是引用类型,可以通过索引访问数组元素。

4.2.1 声明和初始化数组

数组的声明包括指定数组元素的类型和数组变量的名字,以及一对方括号来表示数组的维度。

string[] names = new string[3]; // 声明一个包含3个字符串的数组
names[0] = "Alice";
names[1] = "Bob";
names[2] = "Charlie";

4.2.2 多维数组

多维数组用于存储多维度的数据结构。二维数组是最常见的多维数组类型。

int[,] matrix = new int[3, 2];
matrix[0, 0] = 1;
matrix[0, 1] = 2;
matrix[1, 0] = 3;
matrix[1, 1] = 4;
matrix[2, 0] = 5;
matrix[2, 1] = 6;

4.3 集合与数组的高级操作

4.3.1 LINQ查询

LINQ(语言集成查询)提供了一种查询数据源(包括数组和集合)的简洁方法。

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        var evenNumbers = from number in numbers
                          where number % 2 == 0
                          select number;
        foreach (int number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

4.3.2 集合的排序和过滤

排序和过滤是处理数据时常见的操作。

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 5, 2, 9, 1, 6 };
        var sortedNumbers = numbers.OrderBy(n => n); // 排序
        var evenNumbers = numbers.Where(n => n % 2 == 0).ToList(); // 过滤偶数
        foreach (int number in sortedNumbers)
        {
            Console.WriteLine(number);
        }
        foreach (int number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

4.4 性能优化与最佳实践

在使用集合与数组时,性能优化和最佳实践对提高效率和可读性至关重要。

4.4.1 使用泛型集合

使用泛型集合可以提高代码的类型安全性和性能,因为泛型减少了不必要的装箱和拆箱操作。

4.4.2 避免不必要的集合转换

频繁地转换集合类型可能会导致性能下降。应尽量在创建集合时就选择合适的类型。

4.4.3 利用集合的内置方法

大多数集合类提供了丰富的方法来操作数据,例如 AddRange RemoveAll FindAll 等。使用这些内置方法可以提高代码的可读性和效率。

在本章中,我们详细了解了C#中的集合与数组,包括它们的定义、使用方式和性能优化的策略。通过实例演示了如何高效处理和操作数据集合,这些知识对于构建性能优良的应用程序至关重要。随着对集合与数组的深入理解和实践,您将能够灵活应对数据管理的各种挑战。

5. 异常处理机制

异常处理是确保程序稳定运行和良好用户体验的关键技术。C#中的异常处理机制能够帮助开发者捕捉程序运行时的错误情况,防止程序因未处理的错误而意外终止。在这一章节中,我们将深入了解C#异常处理的细节,并通过实际代码示例来演示如何在日常开发中应用这些技术。

5.1 基本的异常处理结构

C#中的异常处理是通过使用 try catch finally throw 关键字来实现的。 try 块包含了可能抛出异常的代码。如果在 try 块中的代码执行过程中发生异常,那么异常会被传递到最近的 catch 块中。 finally 块则无论是否发生异常都会执行,通常用于资源的清理和释放。

下面是一个简单的异常处理结构示例:

try
{
    // 尝试执行的代码
    int[] numbers = new int[5];
    Console.WriteLine(numbers[10]); // 这里会抛出一个IndexOutOfRangeException
}
catch (Exception ex)
{
    // 捕获异常并进行处理
    Console.WriteLine("发生了一个错误: " + ex.Message);
}
finally
{
    // 最终块,无论是否发生异常都会执行
    Console.WriteLine("这段代码总是会执行。");
}

5.2 自定义异常

在某些情况下,我们需要定义自己的异常类型,以便提供更具体的错误信息。通过继承 Exception 类来创建自定义异常,可以让异常处理过程更加具有可读性和维护性。

// 自定义异常类
public class CustomException : Exception
{
    public CustomException(string message) : base(message) {}
}

// 使用自定义异常
try
{
    throw new CustomException("这是一个自定义异常。");
}
catch (CustomException ex)
{
    Console.WriteLine("捕获到自定义异常: " + ex.Message);
}

5.3 异常的抛出和捕获

异常的抛出是通过 throw 关键字实现的。在C#中,可以抛出任何继承自 System.Exception 的类型。有时候,我们可能需要根据特定条件抛出异常,这时可以在 catch 块内部使用 throw 来重新抛出异常。

// 使用条件语句抛出异常
try
{
    int result = Calculate(10, 0); // Calculate函数可能会抛出异常
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("捕获到除零异常。");
    throw; // 重新抛出当前捕获的异常
}

// 计算函数
public int Calculate(int x, int y)
{
    if (y == 0)
        throw new DivideByZeroException();
    return x / y;
}

5.4 处理多个异常

当一段代码有可能抛出不同类型的多个异常时,可以使用多个 catch 块来分别处理。需要注意的是, catch 块的顺序很重要,因为C#会从上至下检查 catch 块,一旦某个块匹配,其余的将不会被执行。

try
{
    // 可能抛出不同异常的代码
    int result = int.Parse(Console.ReadLine());
}
catch (FormatException ex)
{
    Console.WriteLine("输入格式不正确。");
}
catch (OverflowException ex)
{
    Console.WriteLine("数字超出范围。");
}
catch (Exception ex)
{
    // 默认处理所有其他异常
    Console.WriteLine("发生了一个未知错误。");
}

在上述的五个示例中,我们介绍了C#异常处理的不同方面,包括基本的 try-catch-finally 结构,自定义异常的创建与使用,异常的抛出与捕获,以及处理多个异常的情况。理解这些概念对于编写健壮和可靠的C#应用程序至关重要。

在实践中,合理使用异常处理可以提高程序的可维护性和用户的体验。例如,在处理用户输入时,适当的异常处理可以保证程序不会因为用户的错误操作而崩溃,并且能够给出友好的错误信息。在下一节中,我们将探讨如何利用LINQ技术进行高效的数据查询操作。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:C#是一种现代面向对象编程语言,广泛应用于多个领域。本资源集包含30个C#小程序示例,涵盖基础语法、数据类型、函数方法、类与对象、集合与数组、异常处理、LINQ查询、文件操作、多线程、事件与委托、GUI编程、.NET框架和异步编程等内容。这些示例旨在为初学者和经验丰富的开发者提供实践机会,帮助他们掌握C#编程基础和解决实际问题的能力。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

第1章 窗体与界面设计 11.1 菜单应用实例 2实例001 带历史信息的菜单 2实例002 菜单动态合并 3实例003 像开始菜单一样漂亮的菜单 4实例004 任务栏托盘菜单 5实例005 可以拉伸的菜单界面 5实例006 菜级联菜单 71.2 工具栏设计 7实例007 带背景的工具栏 7实例008 浮动工具栏 8实例009 带下拉菜单的工具栏 9实例010 具有提示功能的工具栏 91.3 状态栏设计 10实例011 在状态栏中显示检查框 10实例012 带进度条的状态栏 11实例013 状态栏中加入图标 121.4 导航菜单界面 12实例014 OutLook界面 12实例015 带导航菜单的主界面 14实例016 图形化的导航界面 151.5 特色程序界面 17实例017 类QQ的程序界面 17实例018 类似Windows Xp的程序界面 18实例019 以图形按钮显示的界面 20实例020 以树形显示的程序界面 21实例021 动态按钮的窗体界面 221.6 特殊形状的窗体 24实例022 非矩形窗体 24实例023 建立字体形状窗体 25实例024 控件随窗体自动调整 26实例025 带分隔栏的窗体 27实例026 随机更换主界面背景 271.7 多媒体光盘 28实例027 自动启动的多媒体光盘程序 28实例028 为触摸屏程序添加虚拟键盘 291.8 窗体效果 30实例029 半透明渐显窗体 31实例030 窗口颜色的渐变 321.9 窗体动画 33实例031 窗体中的滚动字幕 33实例032 动画显示窗体 34实例033 制作闪烁的窗体 35实例034 直接在窗体上绘图 37实例035 动画形式的程序界面 381.10 标题栏窗体 39实例036 使窗体标题栏文字右对齐 39实例037 没有标题栏但可以改变大小的窗口 391.11 设置窗体位置 40实例038 设置窗体在屏幕中的位置 40实例039 始终在最上面的窗体 411.12 设置窗体大小 42实例040 限制窗体大小 42实例041 获取桌面大小 42实例042 在窗口间移动按钮 43实例043 如何实现Office助手 441.13 窗体控制技术 45实例044 在关闭窗口前加入确认对话框 45实例045 使用任意组件拖动窗体 46实例046 修改提示字体及颜色 471.14 其他技术 48实例047 如何为MDI类型窗体设置背景图片 48实例048 向提示框中添加图标 49第2章 控件应用 512.1 TextBox控件应用 52实例049 只允许输入数字的TextBox控件 52实例050 限制用户名称长度及设置密码文本 54实例051 自动删除非法字符 55实例052 为TextBox控件添加列表选择框 572.2 Button控件应用 58实例053 在Button按钮中显示图标 582.3 ComboBox控件应用 59实例054 将数据表中的字段添加到ComboBox控件 59实例055 带查询功能的ComboBox控件 612.4 RichTextBox控件应用 63实例056 利用RichTextBox控件实现文档管理功能 63实例057 利用RichTextBox控件实现文字定位与标识 65实例058 用RichTextBox控件显示图文数据 672.5 ListBox控件应用 68实例059 在ListBox控件间交换数据 68实例060 将数据库数据添加到组合框中 70实例061 借助绑定控件实现数据选择录入 71实例062  ListBox拒绝添加重复信息 722.6 选择类控件应用 73实例063 利用选择控件实现权限设置 74实例064 利用选择控件实现复杂查询 762.7 ListView控件应用 78实例065  ListView列表拒绝添加重复信息 78实例066 将数据库数据添加到ListView控件 80实例067 用ListView控件制作导航界面 81实例068 在ListView控件中对数据排序或统计 83实例069 在ListView控件中绘制底纹 84实例070 在列表视图中拖动视图项 85实例071 用ListView控件选取整行数据 88实例072 用ListView控件开发登录界面 892.8 TreeView控件应用 91实例073 将数据库数据显示到树视图中 91实例074 用TreeView控件制作导航界面 93实例075 用TreeView控件遍历磁盘目录 94实例076 TreeView控件在数据库中的应用 96实例077 带复选框的树状菜单 982.9 其他控件典型应用 100实例078 TrackBar的简单应用 100实例079 SplitContainer的应用 102实例080 MaskedTextBox控件的简单应用 103实例081 制作日历计划任务 105实例082 ImageAnimator类显示动画图片 108实例083 QQ头像列表 1102.10 控件技术 112实例084 程序运行时智能增减控件 112实例085 控制焦点移动 114实例086 动态创建控件 115实例087 在Button按钮上绘图 1162.11 焦点变换与输入控制 117实例088 按回车键焦点在控件中移动的录入窗口 117实例089 程序运行时拖动控件 119实例090 控件得到焦点时变色 120实例091 控件的输入限制 1212.12 特殊控件 122实例092 为控件制作立体效果 122实例093 获取控件名称和内容 124第3章 组件应用 1273.1 BackgroundWorker组件 128实例094  BackgroundWorker组件执行异步操作 1283.2 ErrorProvider组件 130实例095 使用ErrorProvider组件验证文本框输入 130实例096 利用ErrorProvider组件查看数据集中的错误 1323.3 EventLog组件 134实例097 使用EventLog组件读写Windows系统事件日志 134实例098 使用EventLog组件保存Windows系统日志 136实例099 使用EventLog组件向本机现有日志中添加条目 1383.4 FileSystemWatcher组件 140实例100 使用FileSystemWatcher组件监视系统日志文件是否被更改 1403.5 HelpProvider组件 142实例101 使用HelpProvider组件调用帮助文件 1423.6 Process组件 143实例102 使用Process组件访问本地进程 1433.7 Timer组件 145实例103 使用Timer组件制作计时器 145实例104 使用Timer组件显示当前系统时间 150实例105 使用Timer组件制作左右飘动的窗体 151实例106 使用Timer组件实现奥运倒计时 1523.8 ServiceController组件 154实例107 使用ServiceController组件控制计算机的服务 1543.9 ImageList组件 156实例108 使用ImageList组件制作动画图片 1563.10 DirectoryEntry组件 157实例109 使用DirectoryEntry组件建立虚拟目录 158第4章 图形技术 1614.1 绘制图形 162实例110 基本图形绘制 162实例111 在图片中写入文字 163实例112 局部图片的复制 165实例113 波形图的绘制 1664.2 图形转换 168实例114 BMP转换成JPG格式 168实例115 JPG转换成BMP格式 170实例116 位图转化为WMF 171实例117 Ico文件转化为位图 172实例118 图片批量转换工具 1734.3 图像预览 175实例119 局部图像放大 175实例120 浏览大图片 177实例121 剪切图片 178实例122 图像旋转 181实例123 鼠标拖拽图像 1824.4 图形缩放与变换 183实例124 如何放大和缩小图像 183实例125 如何旋转JPG图像 184实例126 如何实现图形翻转 1854.5 图像效果 186实例127 百叶窗效果显示图像 186实例128 推拉效果显示图像 187实例129 水平交错效果显示图像 188实例130 垂直交错效果显示图像 190实例131 图像纹理效果 191实例132 图像浮雕效果 193实例133 积木效果 194实例134 马赛克效果显示图像 1954.6 图像字体 197实例135 旋转的文字 197实例136 当前系统字体列表 198实例137 空心文字 199实例138 如何在图片上平滑移动文字 2014.7 图像动画 202实例139 动画背景窗体 202实例140 随鼠标移动的图像 203实例141 十字光标定位 204实例142 抓取鼠标形状 2064.8 图像识别 207实例143 查看图片的像素 207实例144 获取指定点的RGB值 2074.9 图像工具 208实例145 获取图片类型 208实例146 简单画图程序 209实例147 看图工具 213实例148 文字保存为图片 2154.10 图像应用 215实例149 随机更换壁纸程序 216实例150 屏幕保护 217实例151 模拟石英钟 219实例152 生肖速查 221第5章 多媒体技术 2255.1 CD、VCD播放 226实例153 播放指定的avi-mid-wav文件 226实例154 获取多媒体详细信息列表 2275.2 MP3、WAV播放 228实例155 带记忆功能的MP3播放器 228实例156 自动播放的MP3播放器 231实例157 学校体操定时音乐播放 2335.3 动画播放 234实例158 播放Flash动画 234实例159 制作AVI播放器 236实例160 播放Gif动画 237实例161 利用Image制作小动画 2395.4 媒体控制 240实例162 检测是否安装声卡 240实例163 打开和关闭CDROM 241实例164 控制PC喇叭发声 2425.5 多媒体应用 243实例165 开机祝福程序 243实例166 制作家庭影集 245实例167 产品电子报价 246实例168 产品滚动展示程序 248实例169 将图片资源添加到EXE里 2495.6 屏幕保护相关程序 250实例170 电子相册屏幕保护程序 250实例171 歌曲播放屏幕保护程序 251第6章 文件系统 2536.1 创建和删除文件 254实例172 创建和删除文件夹 254实例173 建立临时文件 255实例174 根据日期动态建立文件 256实例175 清空回收站 2576.2 查找文件 258实例176 搜索文件 259实例177 检查文件是否存在 260实例178 提取指定文件夹目录 2616.3 修改文件 261实例179 更改文件名称 262实例180 修改文件属性 262实例181 修改文件及目录的名字 2646.4 文件目录 265实例182 获得临时文件目录 265实例183 获取应用程序所在目录 266实例184 得到系统当前目录 266实例185 在程序中改变当前路径 2676.5 复制文件 268实例186 移动正在使用的文件 268实例187 批量复制文件 2696.6 指定类型的文件操作 270实例188 文本文件的操作 270实例189 简单的文件加密解密 2716.7 其他 273实例190 获取窗口文本 273实例191 判断文件是否正在被使用 274实例192 在程序中调用.HLP文件 275实例193  C#中实现文件拖放 276实例194 文件比较 276第7章 操作系统与Windows相关程序 2797.1 启动相关 280实例195 进入Windows前发出警告 280实例196 实现注销、关闭和重启计算机 2817.2 获得磁盘属性 284实例197 获得硬盘序列号 284实例198 获取映射驱动器路径 286实例199 判断驱动器类型 2877.3 磁盘相关设置 288实例200 取消磁盘共享 288实例201 检查驱动器容量 289实例202 检测磁盘是否准备好 290实例203 图表显示磁盘容量 291实例204 格式化磁盘 2937.4 系统控制 294实例205 怎样隐藏鼠标 294实例206 允许和禁止用户关机 295实例207 锁定计算机 2967.5 系统设置 297实例208 设置系统输入法 297实例209 设置桌面颜色 298实例210 鼠标交换左右键 2997.6 系统监控 299实例211 检测系统启动模式 300实例212 内存使用状态监控 301实例213 监视剪贴板内容 3027.7 系统软件信息 303实例214 获取用户名 303实例215 获取系统目录 305实例216 注册系统热键 306实例217 获取和修改BIOS计算机名 3077.8 鼠标操作 308实例218 动画鼠标 309实例219 限制鼠标活动区域 310实例220 获取鼠标在任意点的位置 311实例221 判断键盘按下的键值 3117.9 程序控制 312实例222 打开控制面板中的程序 313实例223 添加程序托盘 314实例224 不出现在任务栏上的程序 314实例225 怎样调用外部的Exe文件 315实例226 关闭外部已开启的程序 3167.10 程序运行 317实例227 防止程序多次运行 317实例228 开机后程序自动运行 319实例229 获取任务栏尺寸大小 320实例230 改变系统提示信息 321实例231 获取系统环境变量 322实例232 启动屏幕保护 3237.11 系统隐藏 324实例233 隐藏、显示任务栏 324实例234 隐藏、显示开始按钮 325实例235 查看当前系统版本 326实例236 使桌面图标文字透明 328实例237 检索系统中正在运行的任务 329实例238 列出系统中的打印机 3307.12 其他 332实例239 两种信息发送方式 332实例240 功能快捷键 336第8章 注册表 3398.1 操作注册表 340实例241 怎样存取注册表信息 340实例242 注册表保存注册信息 341实例243 设置“显示 属性”窗体 342实例244 列出注册表指定项下全部键值 3438.2 系 统 设 置 344实例245 隐藏、显示桌面图标 345实例246 隐藏驱动器 345实例247 禁用运行注册表 3478.3 IE浏览器设置 348实例248 修改IE浏览器标题栏内容 348实例249 隐藏IE浏览器的右键关联菜单 349实例250 设置IE浏览器的默认主页 350实例251 禁止修改IE浏览器主页 3518.4 应用软件设置 352实例252 设置Word 2000文档及图片的保存路径 352实例253 限制软件使用次数 353第9章 数据库技术 3559.1 连接Access数据库 356实例254 连接Access数据库 356实例255 连接加密的Access数据库 357实例256 自动识别Access 2000数据库路径 358实例257 连接网络上共享的Access 2000数据库 3609.2 连接SQL Server数据库 361实例258 使用ODBC DSN连接SQL Server数据库 361实例259 使用ODBC非DSN连接SQL Server数据库 364实例260 使用OLE DB连接SQL Server数据库 365实例261 建立SQL Server数据库连接 3669.3 连接其他数据库 367实例262 连接Excel 367实例263 连接Oracle数据库 3689.4 数据库结构的读取与修改 369实例264 读取SQL Server数据库结构 369实例265 修改SQL Server数据库结构 3729.5 数据录入 374实例266 利用数据绑定控件录入数据 374实例267 使用ADO.NET对象录入数据 376实例268 利用SQL语句录入数据 379实例269 利用存储过程录入数据 3809.6 图片存取技术 383实例270 使用存取文件名的方法存取图片 383实例271 使用ADO.NET对象向SQL Server数据库存入图片 3849.7 数据修改 387实例272 利用数据绑定控件修改数据 387实例273 利用数据对象修改数据 390实例274 利用SQL语句修改数据 391实例275 利用存储过程修改数据 3939.8 数据保存前判断 395实例276 判断输入数据是否符合要求 395实例277 通过存储过程实现自动编号 3989.9 数据删除 401实例278 删除表格中指定的记录 401实例279 利用SQL语句删除数据 4029.10 数据记录 403实例280 分页显示信息 403实例281 移动记录 4049.11 数据维护 406实例282 在C#中分离SQL Server数据库 406实例283 在C#中附加SQL Server数据库 407实例284 在C#中附加单文件SQL Server数据库 4099.12 数据备份恢复 410实例285 备份SQL Server数据库 410实例286 还原SQL Server数据库 4139.13 管理系统开发相关 415实例287 开启SQL Server数据库 415实例288 断开SQL Server数据库与其他应用程序的连接 417实例289 带图像列表的系统登录程序 419实例290 利用SQL语句执行外围命令 420实例291 系统初始化 421第10章 SQL查询相关技术 42510.1 SELECT子句 426实例292 查询特定列数据 426实例293 使用列别名 428实例294 在列上加入计算 430实例295 使用函数设置条件 43110.2 查询常量 432实例296 查询数字 433实例297 查询字符串 434实例298 查询日期数据 436实例299 查询逻辑型数据 437实例300 查询空数据 43810.3 查询变量 440实例301 利用变量查询字符串数据 440实例302 利用变量查询数值型数据 441实例303 利用变量查询日期型数据 44210.4 模式查询 444实例304 利用“_”通配符进行查询 444实例305 利用“%”通配符进行查询 445实例306 利用“[]”通配符进行查询 446实例307 利用“[^]”通配符进行查询 448实例308 复杂的模式查询 44910.5 TOP和PERCENT限制查询结果 450实例309 查询前10名数据 450实例310 取出数据统计结果的前10名数据 451实例311 查询销售量占前50%的图书信息 453实例312 查询库存数量占后20%的图书信息 45410.6 周期、日期查询 455实例313 查询指定日期的数据 455实例314 查询指定时间段的数据 457实例315 按月查询数据 45810.7 比较、逻辑、重复查询 460实例316 查询数据大于指定条件的数据 460实例317 NOT与谓词进行组合条件的查询 461实例318 查询时不显示重复记录 463实例319 列出数据中的重复记录和记录条数 46510.8 在查询中使用OR和AND运算符 466实例320 利用OR运算符进行查询 466实例321 利用AND运算符进行查询 467实例322 同时利用OR、AND运算符进行查询 46910.9 排序、分组统计 471实例323 数据分组统计(单列) 471实例324 在分组查询中使用ALL关键字 473实例325 在分组查询中使用CUBE运算符 475实例326 在分组查询中使用ROLLUP 477实例327 对数据进行降序查询 479实例328 对数据进行多条件排序 480实例329 对统计结果进行排序 482实例330 按仓库分组统计图书库存(多列) 483实例331 多表分组统计 484实例332 使用COMPUTE 485实例333 使用COMPUTE BY 48710.10 聚合函数 488实例334 利用聚合函数SUM对销售额进行汇总 488实例335 利用聚合函数AVG求某班学生的平均年龄 490实例336 利用聚合函数MIN求销售额、利润最少的商品 492实例337 利用聚合函数MAX求月销售额完成最多的员工 493实例338 利用聚合函数COUNT求日销售额大于某值的商品数 495实例339 利用聚合函数First或Last求数据表中第一条或最后一条记录 49610.11 多表查询(连接查询) 498实例340 利用FROM子句进行多表查询 498实例341 使用表别名 499实例342 合并多个结果集 50110.12 嵌套查询 503实例343 简单嵌套查询 503实例344 复杂嵌套查询 504实例345 嵌套查询在查询统计中的应用 50610.13 子查询 508实例346 用子查询做派生的表 508实例347 用子查询作表达式 510实例348 在Update语句中应用子查询 51110.14 联合语句Union 512实例349 使用联合查询 512实例350 多表联合查询 514实例351 对联合查询后的结果进行排序 51510.15 内联接查询 517实例352 简单内联接查询 517实例353 复杂内联接查询 518实例354 使用内联接选择一个表与另一个表中行相关的所有行 51910.16 外联接查询 520实例355 left outer join查询 521实例356 right outer join查询 522实例357 使用外联接进行多表联合查询 52310.17 利用IN进行查询 525实例358 用IN查询表中的记录信息 525实例359 使用IN引入子查询限定查询范围 52610.18 交叉表查询 527实例360 利用Trasform分析数据 527实例361 利用Trasform动态分析数据 529实例362 静态交叉表(SQLServer 2000) 531实例363 动态交叉表(SQLServer 2000) 53310.19 函数查询 535实例364 在查询语句中使用格式化函数 536实例365 在查询语句中使用字符串函数 537实例366 在查询中使用日期函数 53810.20 having语句应用 540实例367 利用having语句过滤分组数据 540实例368 having语句应用在多表查询中 54110.21 视图的应用 543实例369 在C#中应用视图 543实例370 获取数据库中的全部用户视图 544实例371 通过视图修改数据 54510.22 存储过程的应用 546实例372 C#应用存储过程 546实例373 应用存储过程添加数据 547实例374 应用存储过程修改数据 549实例375 应用存储过程删除数据 550实例376 C#应用查询存储过程 551实例377 获取数据库中全部的存储过程 552实例378 加密存储过程 55310.23 触发器的应用 555实例379 Insert触发器的应用 555实例380 Update触发器在系统日志中的应用 556实例381 触发器的嵌套使用 557实例382 获取数据库中的触发器 559第11章 报表与打印技术 56111.1 Windows组件打印 562实例383 打印窗体中的数据 562实例384 图形打印 56411.2 利用报表生成器设计报表 566实例385 利用报表专家设计并显示学生基本信息 566实例386 分组统计报表 569实例387 在水晶报表中添加图表 57111.3 水晶报表基本操作 574实例388 在水晶报表中使用Access数据库 575实例389 在水晶报表中使用SQL Server数据库 576实例390 订货总金额超过10万元显示“恭喜获奖”文字 577实例391 薪资大于或等于1万元使用蓝色字体标记 580实例392 筛选薪资大于2000元的男员工 582实例393 按类别分组统计图书库存 584实例394 按成绩总分降序排序 585实例395 部门销售量占公司总销售量的业绩百分比 58611.4 子报表的使用 588实例396 插入子报表 588实例397 编辑与重新导入子报表 589实例398 根据需要显示子报表 59111.5 调用Office进行打印 593实例399 利用Word打印员工报表 593实例400 利用Excel打印学生信息报表 595第12章 图表技术 59712.1 简单图表 598实例401 绘制坐标系 598实例402 绘制椭圆 599实例403 绘制矩形 601实例404 绘制曲线 60212.2 柱形图表 603实例405 将汇总数据利用图表分析 603实例406 柱形图表分析商品走势 605实例407 对排序数据进行分析 608实例408 利用控件实现柱形图分析 60912.3 折线图表 610实例409 利用图表分析产品销售走势 610实例410 利用图表分析彩票中奖情况 612实例411 多曲线数据分析 614实例412 网站人气指数曲线分析 61712.4 饼型图表 619实例413 利用饼型图分析公司男女比率 619实例414 利用饼型图分析产品市场占有率 620实例415 利用多饼型图分析企业人力资源情况 62112.5 图表技术的应用 623实例416 绘制验证码 623实例417 绘制不规则窗体 625第13章 硬件相关开发技术 62713.1 串口控制 628实例418 通过串口发送数据 628实例419 通过串口关闭对方计算机 63013.2 加密狗 631实例420 密码写入与读出加密狗 631实例421 使用加密狗进行身份验证 63413.3 IC卡应用 635实例422 向IC卡中写入数据 635实例423 读取IC卡中的数据 638实例424 利用IC卡制作考勤程序 63913.4 监控 641实例425 简易视频程序 641实例426 摄像头监控录像 644实例427 超市摄像头定时监控系统 64513.5 语音卡控制 647实例428 语音卡电话呼叫系统 647实例429 客户来电查询系统 652实例430 语音卡实现电话录音 65313.6 手机程序开发 655实例431 利用短信猫收发短信息 655实例432 利用短信远程关闭计算机 659实例433 短信息采集烟草销售数据 660实例434 “春晚”节目评比短信息互动平台 66313.7 其他程序 664实例435 条形码扫描器销售商品 664实例436 利用神龙卡制作练歌房程序 665第14章 网络开发技术 66914.1 计算机设置 670实例437 更改计算机名称 670实例438 通过计算机名获取IP地址 672实例439 通过IP地址获取主机名称 673实例440 修改本机IP地址 674实例441 得到本机MAC地址 677实例442 获得系统打开的端口和状态 678实例443 更改DNS地址 68014.2 远程控制 681实例444 远程控制计算机 682实例445 远程服务控制 68314.3 网络复制文件 686实例446 网络中的文件复制 68614.4 局域网管理 688实例447 在局域网内发送信息 688实例448 获取网络中所有工作组名称 690实例449 列出工作组中所有计算机 692实例450 获取网络中某台计算机的磁盘信息 693实例451 映射网络驱动器 69414.5 网络连接与通信 696实例452 编程实现Ping操作 69614.6 网络聊天室 698实例453 利用C#设计聊天程序 698实例454 编写网络聊天室 700第15章 Web编程 70315.1 浏览器应用 704实例455 制作自己的网络浏览软件 704实例456 XML数据库文档的浏览 70815.2 上网控制 710实例457 定时上Internet 710实例458 监测当前网络连接状态 71215.3 邮件管理 713实例459 收取电子邮件 713实例460 SMTP协议发送电子邮件 71715.4 网上信息提取 719实例461 提取并保存网页源码 719实例462 提取网页标题 722第16章 加密、安全与软件注册 72516.1 数据加密与解密 726实例463 数据加密技术 726实例464 文本文件加密与解密 727实例465 利用图片加密文件 73216.2 Access数据库安全 735实例466 如何编程修复Access数据库 735实例467 访问带验证模式的Sqlserver 2000数据库 73716.3 软件注册与加密 739实例468 利用INI文件对软件进行注册 739实例469 利用注册表设计软件注册程序 741实例470 利用网卡序列号设计软件注册程序 743实例471 根据cpu序列号、磁盘序列号设计软件注册程序 746第17章 数据结构与算法 74917.1 链表的实现 750实例472 单向链表的实现 75017.2 双向链表 755实例473 双向链表 75517.3 堆栈 760实例474 堆栈的实现 76017.4 队列 762实例475 队列的实现 76317.5 树的实现 764实例476 树的实现 76417.6 排序 769实例477 冒泡排序 769实例478 选择排序 770实例479 插入排序 771实例480 希尔排序 77217.7 常见算法的实际应用 773实例481 判断素数的算法 773实例482 加密和解密算法 774实例483 判断身份证是否合法 775实例484 判断IP地址是否合法的算法 777实例485 按要求生成指定位数编号 778实例486 身份证号从15位升到18位算法 779第18章 C#高级开发 78118.1 Windows服务开发 782实例487 将局域网聊天程序开发成Windows服务 78218.2 Remoting分布式开发 789实例488 运用Remoting实现文件传送 789实例489 大规模数据访问时缓解服务器压力 79618.3 COM+服务开发 802实例490 COM+服务实现银行转账系统 803实例491 COM+服务解决同时访问大量数据并发性 807第19章 实用工具 81319.1 数据库工具 814实例492 自动配置ODBC的程序 814实例493 制作SQL Server提取器 81719.2 个人工具 819实例494 个人通讯录 819实例495 电子名片盒 822实例496 个人日记本 823实例497 个人理财管理 82519.3 实用工具 827实例498 电话区号、邮编管理软件 827实例499 火车时刻查询软件 828实例500 网站网址导航程序 83219.4 其他工具 833实例501 人民币金额转换 834实例502 列举局域网SQL服务器 836实例503 整点报时程序 837实例504 红绿灯程序 839实例505 万年历 841实例506 彩票抽奖机 844实例507 电子相册 846第20章 程序打包 84920.1 最简单的程序打包 850实例508 最简单的程序打包 850实例509 将特定文件安装到指定文件夹中 85220.2 打包注册表信息 854实例510 打包注册表信息 854技术要点对应实例位置 857 第1章 窗体与界面设计 11.1 菜单应用实例 2实例001 带历史信息的菜单 2实例002 菜单动态合并 3实例003 像开始菜单一样漂亮的菜单 4实例004 任务栏托盘菜单 5实例005 可以拉伸的菜单界面 5实例006 菜级联菜单 71.2 工具栏设计 7实例007 带背景的工具栏 7实例008 浮动工具栏 8实例009 带下拉菜单的工具栏 9实例010 具有提示功能的工具栏 91.3 状态栏设计 10实例011 在状态栏中显示检查框 10实例012 带进度条的状态栏 11实例013 状态栏中加入图标 121.4 导航菜单界面 12实例014 OutLook界面 12实例015 带导航菜单的主界面 14实例016 图形化的导航界面 151.5 特色程序界面 17实例017 类QQ的程序界面 17实例018 类似Windows Xp的程序界面 18实例019 以图形按钮显示的界面 20实例020 以树形显示的程序界面 21实例021 动态按钮的窗体界面 221.6 特殊形状的窗体 24实例022 非矩形窗体 24实例023 建立字体形状窗体 25实例024 控件随窗体自动调整 26实例025 带分隔栏的窗体 27实例026 随机更换主界面背景 271.7 多媒体光盘 28实例027 自动启动的多媒体光盘程序 28实例028 为触摸屏程序添加虚拟键盘 291.8 窗体效果 30实例029 半透明渐显窗体 31实例030 窗口颜色的渐变 321.9 窗体动画 33实例031 窗体中的滚动字幕 33实例032 动画显示窗体 34实例033 制作闪烁的窗体 35实例034 直接在窗体上绘图 37实例035 动画形式的程序界面 381.10 标题栏窗体 39实例036 使窗体标题栏文字右对齐 39实例037 没有标题栏但可以改变大小的窗口 391.11 设置窗体位置 40实例038 设置窗体在屏幕中的位置 40实例039 始终在最上面的窗体 411.12 设置窗体大小 42实例040 限制窗体大小 42实例041 获取桌面大小 42实例042 在窗口间移动按钮 43实例043 如何实现Office助手 441.13 窗体控制技术 45实例044 在关闭窗口前加入确认对话框 45实例045 使用任意组件拖动窗体 46实例046 修改提示字体及颜色 471.14 其他技术 48实例047 如何为MDI类型窗体设置背景图片 48实例048 向提示框中添加图标 49第2章 控件应用 512.1 TextBox控件应用 52实例049 只允许输入数字的TextBox控件 52实例050 限制用户名称长度及设置密码文本 54实例051 自动删除非法字符 55实例052 为TextBox控件添加列表选择框 572.2 Button控件应用 58实例053 在Button按钮中显示图标 582.3 ComboBox控件应用 59实例054 将数据表中的字段添加到ComboBox控件 59实例055 带查询功能的ComboBox控件 612.4 RichTextBox控件应用 63实例056 利用RichTextBox控件实现文档管理功能 63实例057 利用RichTextBox控件实现文字定位与标识 65实例058 用RichTextBox控件显示图文数据 672.5 ListBox控件应用 68实例059 在ListBox控件间交换数据 68实例060 将数据库数据添加到组合框中 70实例061 借助绑定控件实现数据选择录入 71实例062  ListBox拒绝添加重复信息 722.6 选择类控件应用 73实例063 利用选择控件实现权限设置 74实例064 利用选择控件实现复杂查询 762.7 ListView控件应用 78实例065  ListView列表拒绝添加重复信息 78实例066 将数据库数据添加到ListView控件 80实例067 用ListView控件制作导航界面 81实例068 在ListView控件中对数据排序或统计 83实例069 在ListView控件中绘制底纹 84实例070 在列表视图中拖动视图项 85实例071 用ListView控件选取整行数据 88实例072 用ListView控件开发登录界面 892.8 TreeView控件应用 91实例073 将数据库数据显示到树视图中 91实例074 用TreeView控件制作导航界面 93实例075 用TreeView控件遍历磁盘目录 94实例076 TreeView控件在数据库中的应用 96实例077 带复选框的树状菜单 982.9 其他控件典型应用 100实例078 TrackBar的简单应用 100实例079 SplitContainer的应用 102实例080 MaskedTextBox控件的简单应用 103实例081 制作日历计划任务 105实例082 ImageAnimator类显示动画图片 108实例083 QQ头像列表 1102.10 控件技术 112实例084 程序运行时智能增减控件 112实例085 控制焦点移动 114实例086 动态创建控件 115实例087 在Button按钮上绘图 1162.11 焦点变换与输入控制 117实例088 按回车键焦点在控件中移动的录入窗口 117实例089 程序运行时拖动控件 119实例090 控件得到焦点时变色 120实例091 控件的输入限制 1212.12 特殊控件 122实例092 为控件制作立体效果 122实例093 获取控件名称和内容 124第3章 组件应用 1273.1 BackgroundWorker组件 128实例094  BackgroundWorker组件执行异步操作 1283.2 ErrorProvider组件 130实例095 使用ErrorProvider组件验证文本框输入 130实例096 利用ErrorProvider组件查看数据集中的错误 1323.3 EventLog组件 134实例097 使用EventLog组件读写Windows系统事件日志 134实例098 使用EventLog组件保存Windows系统日志 136实例099 使用EventLog组件向本机现有日志中添加条目 1383.4 FileSystemWatcher组件 140实例100 使用FileSystemWatcher组件监视系统日志文件是否被更改 1403.5 HelpProvider组件 142实例101 使用HelpProvider组件调用帮助文件 1423.6 Process组件 143实例102 使用Process组件访问本地进程 1433.7 Timer组件 145实例103 使用Timer组件制作计时器 145实例104 使用Timer组件显示当前系统时间 150实例105 使用Timer组件制作左右飘动的窗体 151实例106 使用Timer组件实现奥运倒计时 1523.8 ServiceController组件 154实例107 使用ServiceController组件控制计算机的服务 1543.9 ImageList组件 156实例108 使用ImageList组件制作动画图片 1563.10 DirectoryEntry组件 157实例109 使用DirectoryEntry组件建立虚拟目录 158第4章 图形技术 1614.1 绘制图形 162实例110 基本图形绘制 162实例111 在图片中写入文字 163实例112 局部图片的复制 165实例113 波形图的绘制 1664.2 图形转换 168实例114 BMP转换成JPG格式 168实例115 JPG转换成BMP格式 170实例116 位图转化为WMF 171实例117 Ico文件转化为位图 172实例118 图片批量转换工具 1734.3 图像预览 175实例119 局部图像放大 175实例120 浏览大图片 177实例121 剪切图片 178实例122 图像旋转 181实例123 鼠标拖拽图像 1824.4 图形缩放与变换 183实例124 如何放大和缩小图像 183实例125 如何旋转JPG图像 184实例126 如何实现图形翻转 1854.5 图像效果 186实例127 百叶窗效果显示图像 186实例128 推拉效果显示图像 187实例129 水平交错效果显示图像 188实例130 垂直交错效果显示图像 190实例131 图像纹理效果 191实例132 图像浮雕效果 193实例133 积木效果 194实例134 马赛克效果显示图像 1954.6 图像字体 197实例135 旋转的文字 197实例136 当前系统字体列表 198实例137 空心文字 199实例138 如何在图片上平滑移动文字 2014.7 图像动画 202实例139 动画背景窗体 202实例140 随鼠标移动的图像 203实例141 十字光标定位 204实例142 抓取鼠标形状 2064.8 图像识别 207实例143 查看图片的像素 207实例144 获取指定点的RGB值 2074.9 图像工具 208实例145 获取图片类型 208实例146 简单画图程序 209实例147 看图工具 213实例148 文字保存为图片 2154.10 图像应用 215实例149 随机更换壁纸程序 216实例150 屏幕保护 217实例151 模拟石英钟 219实例152 生肖速查 221第5章 多媒体技术 2255.1 CD、VCD播放 226实例153 播放指定的avi-mid-wav文件 226实例154 获取多媒体详细信息列表 2275.2 MP3、WAV播放 228实例155 带记忆功能的MP3播放器 228实例156 自动播放的MP3播放器 231实例157 学校体操定时音乐播放 2335.3 动画播放 234实例158 播放Flash动画 234实例159 制作AVI播放器 236实例160 播放Gif动画 237实例161 利用Image制作小动画 2395.4 媒体控制 240实例162 检测是否安装声卡 240实例163 打开和关闭CDROM 241实例164 控制PC喇叭发声 2425.5 多媒体应用 243实例165 开机祝福程序 243实例166 制作家庭影集 245实例167 产品电子报价 246实例168 产品滚动展示程序 248实例169 将图片资源添加到EXE里 2495.6 屏幕保护相关程序 250实例170 电子相册屏幕保护程序 250实例171 歌曲播放屏幕保护程序 251第6章 文件系统 2536.1 创建和删除文件 254实例172 创建和删除文件夹 254实例173 建立临时文件 255实例174 根据日期动态建立文件 256实例175 清空回收站 2576.2 查找文件 258实例176 搜索文件 259实例177 检查文件是否存在 260实例178 提取指定文件夹目录 2616.3 修改文件 261实例179 更改文件名称 262实例180 修改文件属性 262实例181 修改文件及目录的名字 2646.4 文件目录 265实例182 获得临时文件目录 265实例183 获取应用程序所在目录 266实例184 得到系统当前目录 266实例185 在程序中改变当前路径 2676.5 复制文件 268实例186 移动正在使用的文件 268实例187 批量复制文件 2696.6 指定类型的文件操作 270实例188 文本文件的操作 270实例189 简单的文件加密解密 2716.7 其他 273实例190 获取窗口文本 273实例191 判断文件是否正在被使用 274实例192 在程序中调用.HLP文件 275实例193  C#中实现文件拖放 276实例194 文件比较 276第7章 操作系统与Windows相关程序 2797.1 启动相关 280实例195 进入Windows前发出警告 280实例196 实现注销、关闭和重启计算机 2817.2 获得磁盘属性 284实例197 获得硬盘序列号 284实例198 获取映射驱动器路径 286实例199 判断驱动器类型 2877.3 磁盘相关设置 288实例200 取消磁盘共享 288实例201 检查驱动器容量 289实例202 检测磁盘是否准备好 290实例203 图表显示磁盘容量 291实例204 格式化磁盘 2937.4 系统控制 294实例205 怎样隐藏鼠标 294实例206 允许和禁止用户关机 295实例207 锁定计算机 2967.5 系统设置 297实例208 设置系统输入法 297实例209 设置桌面颜色 298实例210 鼠标交换左右键 2997.6 系统监控 299实例211 检测系统启动模式 300实例212 内存使用状态监控 301实例213 监视剪贴板内容 3027.7 系统软件信息 303实例214 获取用户名 303实例215 获取系统目录 305实例216 注册系统热键 306实例217 获取和修改BIOS计算机名 3077.8 鼠标操作 308实例218 动画鼠标 309实例219 限制鼠标活动区域 310实例220 获取鼠标在任意点的位置 311实例221 判断键盘按下的键值 3117.9 程序控制 312实例222 打开控制面板中的程序 313实例223 添加程序托盘 314实例224 不出现在任务栏上的程序 314实例225 怎样调用外部的Exe文件 315实例226 关闭外部已开启的程序 3167.10 程序运行 317实例227 防止程序多次运行 317实例228 开机后程序自动运行 319实例229 获取任务栏尺寸大小 320实例230 改变系统提示信息 321实例231 获取系统环境变量 322实例232 启动屏幕保护 3237.11 系统隐藏 324实例233 隐藏、显示任务栏 324实例234 隐藏、显示开始按钮 325实例235 查看当前系统版本 326实例236 使桌面图标文字透明 328实例237 检索系统中正在运行的任务 329实例238 列出系统中的打印机 3307.12 其他 332实例239 两种信息发送方式 332实例240 功能快捷键 336第8章 注册表 3398.1 操作注册表 340实例241 怎样存取注册表信息 340实例242 注册表保存注册信息 341实例243 设置“显示 属性”窗体 342实例244 列出注册表指定项下全部键值 3438.2 系 统 设 置 344实例245 隐藏、显示桌面图标 345实例246 隐藏驱动器 345实例247 禁用运行注册表 3478.3 IE浏览器设置 348实例248 修改IE浏览器标题栏内容 348实例249 隐藏IE浏览器的右键关联菜单 349实例250 设置IE浏览器的默认主页 350实例251 禁止修改IE浏览器主页 3518.4 应用软件设置 352实例252 设置Word 2000文档及图片的保存路径 352实例253 限制软件使用次数 353第9章 数据库技术 3559.1 连接Access数据库 356实例254 连接Access数据库 356实例255 连接加密的Access数据库 357实例256 自动识别Access 2000数据库路径 358实例257 连接网络上共享的Access 2000数据库 3609.2 连接SQL Server数据库 361实例258 使用ODBC DSN连接SQL Server数据库 361实例259 使用ODBC非DSN连接SQL Server数据库 364实例260 使用OLE DB连接SQL Server数据库 365实例261 建立SQL Server数据库连接 3669.3 连接其他数据库 367实例262 连接Excel 367实例263 连接Oracle数据库 3689.4 数据库结构的读取与修改 369实例264 读取SQL Server数据库结构 369实例265 修改SQL Server数据库结构 3729.5 数据录入 374实例266 利用数据绑定控件录入数据 374实例267 使用ADO.NET对象录入数据 376实例268 利用SQL语句录入数据 379实例269 利用存储过程录入数据 3809.6 图片存取技术 383实例270 使用存取文件名的方法存取图片 383实例271 使用ADO.NET对象向SQL Server数据库存入图片 3849.7 数据修改 387实例272 利用数据绑定控件修改数据 387实例273 利用数据对象修改数据 390实例274 利用SQL语句修改数据 391实例275 利用存储过程修改数据 3939.8 数据保存前判断 395实例276 判断输入数据是否符合要求 395实例277 通过存储过程实现自动编号 3989.9 数据删除 401实例278 删除表格中指定的记录 401实例279 利用SQL语句删除数据 4029.10 数据记录 403实例280 分页显示信息 403实例281 移动记录 4049.11 数据维护 406实例282 在C#中分离SQL Server数据库 406实例283 在C#中附加SQL Server数据库 407实例284 在C#中附加单文件SQL Server数据库 4099.12 数据备份恢复 410实例285 备份SQL Server数据库 410实例286 还原SQL Server数据库 4139.13 管理系统开发相关 415实例287 开启SQL Server数据库 415实例288 断开SQL Server数据库与其他应用程序的连接 417实例289 带图像列表的系统登录程序 419实例290 利用SQL语句执行外围命令 420实例291 系统初始化 421第10章 SQL查询相关技术 42510.1 SELECT子句 426实例292 查询特定列数据 426实例293 使用列别名 428实例294 在列上加入计算 430实例295 使用函数设置条件 43110.2 查询常量 432实例296 查询数字 433实例297 查询字符串 434实例298 查询日期数据 436实例299 查询逻辑型数据 437实例300 查询空数据 43810.3 查询变量 440实例301 利用变量查询字符串数据 440实例302 利用变量查询数值型数据 441实例303 利用变量查询日期型数据 44210.4 模式查询 444实例304 利用“_”通配符进行查询 444实例305 利用“%”通配符进行查询 445实例306 利用“[]”通配符进行查询 446实例307 利用“[^]”通配符进行查询 448实例308 复杂的模式查询 44910.5 TOP和PERCENT限制查询结果 450实例309 查询前10名数据 450实例310 取出数据统计结果的前10名数据 451实例311 查询销售量占前50%的图书信息 453实例312 查询库存数量占后20%的图书信息 45410.6 周期、日期查询 455实例313 查询指定日期的数据 455实例314 查询指定时间段的数据 457实例315 按月查询数据 45810.7 比较、逻辑、重复查询 460实例316 查询数据大于指定条件的数据 460实例317 NOT与谓词进行组合条件的查询 461实例318 查询时不显示重复记录 463实例319 列出数据中的重复记录和记录条数 46510.8 在查询中使用OR和AND运算符 466实例320 利用OR运算符进行查询 466实例321 利用AND运算符进行查询 467实例322 同时利用OR、AND运算符进行查询 46910.9 排序、分组统计 471实例323 数据分组统计(单列) 471实例324 在分组查询中使用ALL关键字 473实例325 在分组查询中使用CUBE运算符 475实例326 在分组查询中使用ROLLUP 477实例327 对数据进行降序查询 479实例328 对数据进行多条件排序 480实例329 对统计结果进行排序 482实例330 按仓库分组统计图书库存(多列) 483实例331 多表分组统计 484实例332 使用COMPUTE 485实例333 使用COMPUTE BY 48710.10 聚合函数 488实例334 利用聚合函数SUM对销售额进行汇总 488实例335 利用聚合函数AVG求某班学生的平均年龄 490实例336 利用聚合函数MIN求销售额、利润最少的商品 492实例337 利用聚合函数MAX求月销售额完成最多的员工 493实例338 利用聚合函数COUNT求日销售额大于某值的商品数 495实例339 利用聚合函数First或Last求数据表中第一条或最后一条记录 49610.11 多表查询(连接查询) 498实例340 利用FROM子句进行多表查询 498实例341 使用表别名 499实例342 合并多个结果集 50110.12 嵌套查询 503实例343 简单嵌套查询 503实例344 复杂嵌套查询 504实例345 嵌套查询在查询统计中的应用 50610.13 子查询 508实例346 用子查询做派生的表 508实例347 用子查询作表达式 510实例348 在Update语句中应用子查询 51110.14 联合语句Union 512实例349 使用联合查询 512实例350 多表联合查询 514实例351 对联合查询后的结果进行排序 51510.15 内联接查询 517实例352 简单内联接查询 517实例353 复杂内联接查询 518实例354 使用内联接选择一个表与另一个表中行相关的所有行 51910.16 外联接查询 520实例355 left outer join查询 521实例356 right outer join查询 522实例357 使用外联接进行多表联合查询 52310.17 利用IN进行查询 525实例358 用IN查询表中的记录信息 525实例359 使用IN引入子查询限定查询范围 52610.18 交叉表查询 527实例360 利用Trasform分析数据 527实例361 利用Trasform动态分析数据 529实例362 静态交叉表(SQLServer 2000) 531实例363 动态交叉表(SQLServer 2000) 53310.19 函数查询 535实例364 在查询语句中使用格式化函数 536实例365 在查询语句中使用字符串函数 537实例366 在查询中使用日期函数 53810.20 having语句应用 540实例367 利用having语句过滤分组数据 540实例368 having语句应用在多表查询中 54110.21 视图的应用 543实例369 在C#中应用视图 543实例370 获取数据库中的全部用户视图 544实例371 通过视图修改数据 54510.22 存储过程的应用 546实例372 C#应用存储过程 546实例373 应用存储过程添加数据 547实例374 应用存储过程修改数据 549实例375 应用存储过程删除数据 550实例376 C#应用查询存储过程 551实例377 获取数据库中全部的存储过程 552实例378 加密存储过程 55310.23 触发器的应用 555实例379 Insert触发器的应用 555实例380 Update触发器在系统日志中的应用 556实例381 触发器的嵌套使用 557实例382 获取数据库中的触发器 559第11章 报表与打印技术 56111.1 Windows组件打印 562实例383 打印窗体中的数据 562实例384 图形打印 56411.2 利用报表生成器设计报表 566实例385 利用报表专家设计并显示学生基本信息 566实例386 分组统计报表 569实例387 在水晶报表中添加图表 57111.3 水晶报表基本操作 574实例388 在水晶报表中使用Access数据库 575实例389 在水晶报表中使用SQL Server数据库 576实例390 订货总金额超过10万元显示“恭喜获奖”文字 577实例391 薪资大于或等于1万元使用蓝色字体标记 580实例392 筛选薪资大于2000元的男员工 582实例393 按类别分组统计图书库存 584实例394 按成绩总分降序排序 585实例395 部门销售量占公司总销售量的业绩百分比 58611.4 子报表的使用 588实例396 插入子报表 588实例397 编辑与重新导入子报表 589实例398 根据需要显示子报表 59111.5 调用Office进行打印 593实例399 利用Word打印员工报表 593实例400 利用Excel打印学生信息报表
第1章 C#编程基础  实例1 Hello C#!  实例2 HeyGuy  实例3 预定义类型  实例4 类型转换  实例5 选择语句  实例6 循环语句  实例7 跳转语句  实例8 数组  实例9 枚举与结构类型  实例10 类  实例11 位运算  实例12 操作符重载  实例13 虚方法  实例14 委托  实例15 属性  实例16 异常处理  实例17 链表  实例18 回文数  实例19 汉诺塔  实例20 冒泡排序  实例21 插入排序  小结 第2章 界面编程  实例22 Hello Form  实例23 主菜单  实例24 上下文菜单  实例25 工具栏  实例26 状态栏  实例27 进度条  实例28 滑块控件  实例29 单选框和复选框  实例30 列表框和组合框  实例31 列表视图  实例32 树视图  实例33 Timer控件  实例34 Splitter控件  实例35 时钟控件和日历控件  实例36 MDI窗口  实例37 窗体继承  实例38 自制控件  实例39 使用自制控件  实例40 模式与非模式  实例41 会跑的按钮  实例42 绘制背景  实例43 可调窗口  实例44 托动窗体  实例45 电子便条  实例46 计算器界面设计  实例47 计算器功能实现  实例48 小闹钟  小结 第3章 图形与图像处理  实例49 简单画图  实例50 使用OnPaint绘制图形  实例51 绘制贝赛尔曲线  实例52 显示图像  实例53 消除图片背景  实例54 底片滤镜  实例55 浮雕效果  实例56 显示字体  实例57 特效字  实例58 旋转图片  实例59 打印  小结 第4章 线程 第5章 文件处理和系统操作 第6章 数据库编程 第7章 网络编程 第8章 Web应用程序的开发 第9章 多媒体 第10章 安全性 第11章 设计模式 第12章 杂例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值