主页 > 机票攻略 > 打印发票的软件怎么操作啊???

打印发票的软件怎么操作啊???

栏目: 作者: 时间:

打印发票的软件怎么操作啊???

是开票系统打印的吗?开好发票后点打印(保存)就可以保存,弹出打印对话框:就可以打印了

关于C#自动生成的代码

如果你会托管和事件的话,再看那些代码,就会很简单。例:using System;namespace MyCollections

{

using System.Collections;

public delegate void ChangedEventHandler(object sender, EventArgs e);

public class ListWithChangedEvent : ArrayList

{

/* 声明一个事件,名称为Changed,并指明用ChangedEventHandler作为委托

当触发Changed事件时,可以通过ChangedEventHandler这个委托进行事件处理*/

public event ChangedEventHandler Changed; public event ChangedEventHandler Added; protected virtual void OnChanged(EventArgs e)

{

/* 事件调用: (调用事件的语法和调用方法类似,直接使用事件的名称,并传入事件的参数就可以了)

*

* 先判断是否有对象将委托与该事件关联,

* 如果没有对象将委托与事件关联,则委托的事件为null。

* 调用事件时先检查是否为null,如果不为null,再调用该事件。

* ※其实也可以理解为事件Changed当使用+=之后,Changed被赋值了(即被关联了委托ChangedEventHandler)

* ※同时由于委托指向了方法,因此当事件Changed发生时,被指向的方法也就可以被调用了。

*/

if (Changed != null)

Changed(this, e);

}

protected virtual void OnAdded(EventArgs e)

{

if (Added != null)

Added(this, EventArgs.Empty);

}

/* 当调用Add,Clear或者set数组的时候,就会调用OnChanged方法,而OnChanged方法中调用了Changed事件,

* 所以也可以说当调用如下的方法时调用了Change事件 */

public override int Add(object value)

{

int i= base.Add(value);

OnAdded(EventArgs.Empty);

return i;

} public override void Clear()

{

base.Clear();

OnChanged(EventArgs.Empty);

}

public override object this[int index]

{

set

{

base[index] = value;

OnChanged(EventArgs.Empty);

}

}

}

}namespace TestEvents

{

using MyCollections;

class Test

{

public static void Main()

{

ListWithChangedEvent list = new ListWithChangedEvent();

list.Added += new ChangedEventHandler(ListAdded);

/*

* 用+=将事件和委托关联在一起,使用-=解除关联。一旦建立起这种关联,委托就可以调用事件发生时处理的方法。

* 事件Changed和委托ChangedEventHandler关联在一起,并指明当事件发生时,调用参数中指明的方法ListChanged。

* 这样,ChangedEventHandler就知道,当对象的状态改变时,就调用Changed事件,调用Changed事件时就执行ListChanged这个方法。

*/

list.Changed += new ChangedEventHandler(ListChanged);

//以上的一步可以分解成如下二步:

//ChangedEventHandler a = new ChangedEventHandler(ListChanged);

//List.Changed += a;

list.Add(item 1);

list[0] = item 2;

list.Clear();

list.Added -= new ChangedEventHandler(ListAdded);

list.Changed -= new ChangedEventHandler(ListChanged);

}

private static void ListChanged(object sender, EventArgs e)

{

/* 事件处理方法的参数类型和个数必须和delegate类型定义的一致,不过参数的名称可以相同也可以不同 */

Console.WriteLine(Changed or Cleared);

}

private static void ListAdded(object sender, EventArgs e)

{

Console.WriteLine(Added);

}

}

}