• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Programmer's Cookbook

            {C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

            Event Handling in C#(轉(zhuǎn))

             

            In a previous article, we have seen a sneak preview about event handling in C#. In this article, we will examine the concept in detail with the help of relevant examples.

            Understanding the Basic Technique

            Actions and events serve an important part in every GUI-based application. These are equally important in the same way because we are arranging components using either Visual Studio .NET or by applying codes. It's these actions that instruct the program what to do when something happens.

            For example, when a user performs a mouse click or a keyboard operation, some kind of event is taking place. If the user does not perform that operation, nothing will happen. Think of a situation where you are not performing a mouse click or a keyboard operation after booting the computer. Before going forward, let's discuss how different Application Programming Interfaces (APIs) handle events.

            Microsoft Foundation Classes (MFC)

            These classes are based upon the Microsoft Win32 API. Normally, development work is done through Visual C++; programming using this API is a tedious task. A developer would have to learn complex set of theories and syntaxes.

            Java API

            Java provides a nice set of packages and classes such as the Abstract Windowing Toolkit (AWT) and Swing packages to perform GUI-based programming. These classes and packages also provide functionalities for handling events. In Java, you have to learn the concept of Interfaces for applying actions. The main difficulty is that you should learn and remember all methods in the corresponding Interfaces, failing which you would get compile-time errors. As compared to Java, event handling in C# is much more simplified. It's possible to handle various mouse- and key-related events quickly and in a more efficient manner.

            The basic principles behind event handling in C# is elaborated below. These principles are applicable to all languages under the .NET framework.

            1. Invoke the related event, such as Click, Key Press, and so forth by supplying a custom method using += operator as shown here:
              b1.Click += new EventHandler(Your Method Name)
              
            2. While applying the above method, it should conform to a delegate of the class System.EventHandler, as shown in the following code fragment:
              public delegate void EventHandler(object sender, Event e) {}
              

            In the above code, the first argument indicates the object sending the event and the second argument contains information for the current event. You can use this argument object, here e, to handle functionalities associated with the related event.

            Triggering a Button

            In this session, we will examine how to activate a WinForm button.

            As already outlined, you need not worry about the placement of controls if you are using Visual C# .NET. As you place buttons and text boxes, the built-in editor will automatically create codes in the background. Double-clicking a control takes you to the Form Editor's area, where you can straightaway type your codes. For our examples, we use Notepad as our editor and .NET SDK for compiling and executing the applications.

            Use your favorite editor to enter the code shown in Listing 1 and save it as Butevent.cs. Finally, compile and execute the program.

            Listing 1

            // Compilation   :  csc Butevent.cs
            // Execution     :  Butevent
            
            using System;
            using System.Windows.Forms;
            using System.Drawing;
            
            public class Butevent:Form  {
               TextBox t1 = new TextBox();
               Button b1 = new Button();
            
               public Butevent() {
                 this.Text = "C# Program ";
                 t1.Location = new Point(20,30);
                 b1.Text = "Click here to activate";
                 b1.Location = new Point(20,55);
                 b1.Size = new Size(150,20);
            
                 // Invoking Method or EventHandler
                 b1.Click+=new EventHandler(OnClick);
            
                 this.Controls.Add(t1);
                 this.Controls.Add(b1);
            
                 // Invoking Method or EventHandler
                 this.Resize += new EventHandler(OnResize);
               }
            
               //Applying EventHandler
               public void OnResize(object sender,EventArgs ee) {
                  MessageBox.Show("oops! Form Resized");
               }
            
               //Applying EventHandler
               public void OnClick(object sender,EventArgs e) {
                  t1.Text = "Hello C#";
               }
            
               public static void Main() {
                  Application.Run(new Butevent());
               }
            
            }
            

            There are two kinds of processes going on in the above piece of code. One is that, upon clicking the button (b1), "Hello C#" would be printed inside the Textbox. Another is when you resize the form; a message box pops up with the message as shown in the above code. Locate the message yourself by verifying the code.

            Working with Mouse and Key Events

            We will examine a few mouse- and key-related events in this last session of this article.

            If you activate something via the mouse, the mouse event takes place whereas if you are using the keyboard, a key event occurs. There are various types of these events, such as pressing the mouse, releasing the mouse, entering the mouse, pressing the keyboard, and so forth. First, we will cover mouse events.

            Handling Mouse Events

            The Control class specifies various events using the mouse. One such event is MouseUp. You have to apply this event in your program as shown in Listing 2:

            Listing 2

            // Compilation   :  csc Mousedemo.cs
            // Execution     :  Mousedemo
            
            using System;
            using System.Windows.Forms;
            using System.Drawing;
            
            public class Mousedemo:Form  {
            
               public Mousedemo()  {
                 this.MouseUp += new MouseEventHandler(OnMouseup);
               }
            
               public void OnMouseup(object sender,MouseEventArgs e)   {
                 this.Text = "Current Position (" +e.X + " , " + e.Y +")";
               }
            
               public static void Main()  {
                 Application.Run(new Mousedemo());
               }
            
            }
            

            As usual, compile and execute the above code. The current mouse coordinates will be displayed on the Form's title bar. e.X and e.Y imply the X and Y coordinates, respectively. Other popular mouse events are Click, DoubleClick, MouseEnter, and MouseLeave. These events also can be handled in the similar way as outlined in the above code. Next, we will examine key-related events, which are triggered via the keyboard.

            Using Keyboard Events

            Every modern programming language contains all necessary functionalities for handling keyboard-related events. C# also provides us with three events. They are KeyPress, KeyUp, and KeyDown, which you can use to handle keyboard events.

            Listing 3 shows the usage of the KeyUp event. As usual, enter the code given below using your editor.

            Listing 3

            // Compilation   :  csc Keydemo.cs
            // Execution     :  Keydemo
            
            using System;
            using System.Windows.Forms;
            using System.Drawing;
            
            public class Keydemo:Form {
            
               public Keydemo() {
                 this.KeyUp += new KeyEventHandler(OnKeyPress);
               }
            
               public void OnKeyPress(object sender, KeyEventArgs e)   {
                 MessageBox.Show(e.KeyCode.ToString(), "Your input");
               }
            
               public static void Main()  {
                 Application.Run(new Keydemo());
               }
            
            }
            

            Upon execution, press any key and you will be able to view a message box with the corresponding key code in it. Cool, isn't it?

            -------------------------------------------

            About the Author

            Anand Narayanaswamy is a Microsoft MVP (Microsoft Most Valuable Professional) who works as a freelance Web/Software developer and technical writer. He runs and maintains learnxpress.com, and provides free technical support to users. His areas of interest include Web development, Software development using Visual Basic, and in the design and preparation of courseware, technical articles, and tutorials.

            posted on 2005-11-15 16:37 夢(mèng)在天涯 閱讀(965) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C#/.NET

            公告

            EMail:itech001#126.com

            導(dǎo)航

            統(tǒng)計(jì)

            • 隨筆 - 461
            • 文章 - 4
            • 評(píng)論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1804663
            • 排名 - 5

            最新評(píng)論

            閱讀排行榜

            国产精品对白刺激久久久| 亚洲国产成人乱码精品女人久久久不卡| 久久综合五月丁香久久激情| 亚洲乱码日产精品a级毛片久久 | 大美女久久久久久j久久| 精品久久久久久无码人妻热| 久久亚洲国产精品五月天婷| 久久人妻无码中文字幕| 狠狠精品干练久久久无码中文字幕| 久久久久无码专区亚洲av| 久久精品国产亚洲av麻豆蜜芽 | 欧美日韩中文字幕久久久不卡 | 久久精品国产秦先生| 中文字幕无码久久人妻| 国产成人久久精品一区二区三区| 久久久久久青草大香综合精品| 亚洲va国产va天堂va久久| 久久夜色精品国产噜噜亚洲a| 99精品国产在热久久无毒不卡| 国产精品久久久久免费a∨| 一级做a爰片久久毛片16| 久久精品夜夜夜夜夜久久| 精产国品久久一二三产区区别| 久久激情五月丁香伊人| 色综合合久久天天综合绕视看| 久久亚洲日韩精品一区二区三区| 狠狠色丁香婷婷久久综合| 激情久久久久久久久久| 亚洲国产成人久久精品动漫| 欧洲精品久久久av无码电影| 国产精品乱码久久久久久软件| 中文字幕无码久久人妻| 久久亚洲精品国产精品婷婷| 伊人 久久 精品| 伊人久久大香线蕉亚洲| 99久久精品免费看国产一区二区三区 | 久久久久久亚洲精品不卡| 久久久久人妻一区精品果冻| 久久久久无码精品| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 无夜精品久久久久久|