Welcome

首页 / 软件开发 / .NET编程技术 / 深入理解.Net事件

深入理解.Net事件2012-01-16 blacktear 前两天在与朋友聊天时提到了事件,故写下此文与他分享对事件的理解。因不敢独享所以拿出来请大家指正。

在进行WinForm编程时,事件这个概念无时无刻都围绕身边。点个按钮就是一个事件。在.Net中,事件这个概念总是让人觉得比较复杂,有着深奥的理论,而且其中的delegate关键字本身就让人觉得很深奥。

其实呢,事件并没有那么复杂而且深奥。只是MS为了让程序员写的代码少一点,鼓捣出个代理的概念。其实如果您对Java的界面编程有所了解之后,对.Net事件的理解就会顺利多了。当然,下面我们将先接触一段Java的代码。

在Java的GUI编程中,没有代理这个概念,它用的是接口。我们先来看一个带按钮的窗口:

1import java.awt.event.ActionEvent;2import java.awt.event.ActionListener;3import java.awt.event.WindowAdapter;4import java.awt.event.WindowEvent;5import javax.swing.JButton;6import javax.swing.JFrame;78public class EventStudy {9 public static void main(String[] args) {10   JFrame f = new JFrame();11   JButton b = new JButton();12   f.addWindowListener(new WindowAdapter(){13     @Override14     public void windowClosing(WindowEvent e) {15       System.exit(0);16     }17   });18   f.setSize(300, 200);19   b.setText("I"m a Button");20   b.addActionListener(new ActionListener(){21     @Override22     public void actionPerformed(ActionEvent e) {23       System.out.println("the Button is Clicked.");24     }25   });26   f.add(b);27   f.setVisible(true);28 }29}30