Esta documentación está archivada y no tiene mantenimiento.

Control.MouseWheel (Evento)

Se produce cuando la rueda del mouse se mueve mientras el control tiene el foco.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public event MouseEventHandler MouseWheel
/** @event */
public void add_MouseWheel (MouseEventHandler value)

/** @event */
public void remove_MouseWheel (MouseEventHandler value)

En JScript, se pueden controlar los eventos que define una clase, pero no se pueden definir unos propios.
No aplicable.

Cuando se controla el evento MouseWheel, es importante obedecer los estándares de interfaz de usuario asociados a la rueda del mouse. El valor de la propiedad MouseEventArgs.Delta indica cuánto se ha movido la rueda del mouse. La interfaz de usuario debe desplazarse cuando el incremento acumulado de movimiento sea 120. La interfaz de usuario debe desplazarse el número de líneas lógicas devuelto por la propiedad SystemInformation.MouseWheelScrollLines para cada valor de incremento de movimiento alcanzado. Aunque tiene la posibilidad de desplazarse con mayor suavidad en incrementos inferiores a 120 unidades, la proporción debe permanecer constante, es decir, SystemInformation.MouseWheelScrollLines líneas desplazadas por cada 120 unidades de desplazamiento de la rueda.

Para obtener más información sobre la forma de controlar mensajes relacionados con la rueda del mouse, consulte la documentación acerca de los mensajes de WM_MOUSEWHEEL en la referencia de Windows Platform SDK, en MSDN Library en http://msdn.microsoft.com/library/spa.

Los eventos del mouse se producen en el siguiente orden:

  1. MouseEnter

  2. MouseMove

  3. MouseHover / MouseDown / MouseWheel

  4. MouseUp

  5. MouseLeave

Para obtener más información sobre la forma de controlar eventos, vea Utilizar eventos.

En el ejemplo de código siguiente se muestra cómo se utilizan diferentes eventos del mouse para dibujar el trazo del mouse sobre un Panel. Se agrega un segmento de línea a GraphicsPath para cada uno de los eventos MouseMove y MouseDown que se produzcan. Para actualizar los gráficos, se llama al método Invalidate para Panel en cada evento MouseDown y MouseUp. Además, el trazado del gráfico se desplaza hacia arriba o hacia abajo cuando se produce el evento MouseWheel. Otros eventos de mouse, como MouseHover, también se identifican en la pantalla. Asimismo, en la pantalla se muestra información adicional sobre el mouse desde la clase SystemInformation.

using System;
using System.Drawing;
using System.Windows.Forms;

namespace MouseEvent
{
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Panel panel1;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.Label label5;
        private System.Windows.Forms.Label label6;
        private System.Windows.Forms.Label label7;
        private System.Windows.Forms.Label label8;
        private System.Windows.Forms.Label label9;
        private System.Windows.Forms.Button clearButton;
        private System.Drawing.Drawing2D.GraphicsPath mousePath;
        private System.Windows.Forms.GroupBox groupBox1;

        private int fontSize = 20;        

        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        public Form1()
        {            
            mousePath = new System.Drawing.Drawing2D.GraphicsPath();

            this.panel1 = new System.Windows.Forms.Panel();
            this.label1 = new System.Windows.Forms.Label();
            this.clearButton = new System.Windows.Forms.Button();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.label4 = new System.Windows.Forms.Label();
            this.label5 = new System.Windows.Forms.Label();
            this.label6 = new System.Windows.Forms.Label();
            this.label7 = new System.Windows.Forms.Label();
            this.label8 = new System.Windows.Forms.Label();
            this.label9 = new System.Windows.Forms.Label();
            this.groupBox1 = new System.Windows.Forms.GroupBox();

            // Mouse Events Label
            this.label1.Location = new System.Drawing.Point(24, 504);
            this.label1.Size = new System.Drawing.Size(392, 23);
            // DoubleClickSize Label
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(24, 48);
            this.label2.Size = new System.Drawing.Size(35, 13);
            // DoubleClickTime Label
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(24, 72);
            this.label3.Size = new System.Drawing.Size(35, 13);
            // MousePresent Label
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(24, 96);
            this.label4.Size = new System.Drawing.Size(35, 13);
            // MouseButtons Label
            this.label5.AutoSize = true;
            this.label5.Location = new System.Drawing.Point(24, 120);
            this.label5.Size = new System.Drawing.Size(35, 13);
            // MouseButtonsSwapped Label
            this.label6.AutoSize = true;
            this.label6.Location = new System.Drawing.Point(320, 48);
            this.label6.Size = new System.Drawing.Size(35, 13);
            // MouseWheelPresent Label
            this.label7.AutoSize = true;
            this.label7.Location = new System.Drawing.Point(320, 72);
            this.label7.Size = new System.Drawing.Size(35, 13);
            // MouseWheelScrollLines Label
            this.label8.AutoSize = true;
            this.label8.Location = new System.Drawing.Point(320, 96);
            this.label8.Size = new System.Drawing.Size(35, 13);
            // NativeMouseWheelSupport Label
            this.label9.AutoSize = true;
            this.label9.Location = new System.Drawing.Point(320, 120);
            this.label9.Size = new System.Drawing.Size(35, 13);

            // Mouse Panel
            this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
                | System.Windows.Forms.AnchorStyles.Right);
            this.panel1.BackColor = System.Drawing.SystemColors.ControlDark;
            this.panel1.Location = new System.Drawing.Point(16, 160);
            this.panel1.Size = new System.Drawing.Size(664, 320);
            this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseUp);
            this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
            this.panel1.MouseEnter += new System.EventHandler(this.panel1_MouseEnter);
            this.panel1.MouseHover += new System.EventHandler(this.panel1_MouseHover);
            this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
            this.panel1.MouseLeave += new System.EventHandler(this.panel1_MouseLeave);
            this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown);
            this.panel1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseWheel);

            // Clear Button
            this.clearButton.Anchor = (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
            this.clearButton.Location = new System.Drawing.Point(592, 504);
            this.clearButton.TabIndex = 1;
            this.clearButton.Text = "Clear";
            this.clearButton.Click += new System.EventHandler(this.clearButton_Click);
            
            // GroupBox
            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
                | System.Windows.Forms.AnchorStyles.Right);
            this.groupBox1.Location = new System.Drawing.Point(16, 24);
            this.groupBox1.Size = new System.Drawing.Size(664, 128);
            this.groupBox1.Text = "System.Windows.Forms.SystemInformation";

            // Set up how the form should be displayed and add the controls to the form.
            this.ClientSize = new System.Drawing.Size(696, 534);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                        this.label9,this.label8,this.label7,this.label6,
                                        this.label5,this.label4,this.label3,this.label2,
                                        this.clearButton,this.panel1,this.label1,this.groupBox1});
            this.Text = "Mouse Event Example";

            // Displays information about the system mouse.
            label2.Text = "SystemInformation.DoubleClickSize: " + SystemInformation.DoubleClickSize.ToString();
            label3.Text = "SystemInformation.DoubleClickTime: " + SystemInformation.DoubleClickTime.ToString();
            label4.Text = "SystemInformation.MousePresent: " + SystemInformation.MousePresent.ToString();
            label5.Text = "SystemInformation.MouseButtons: " + SystemInformation.MouseButtons.ToString();
            label6.Text = "SystemInformation.MouseButtonsSwapped: " + SystemInformation.MouseButtonsSwapped.ToString();
            label7.Text = "SystemInformation.MouseWheelPresent: " + SystemInformation.MouseWheelPresent.ToString();
            label8.Text = "SystemInformation.MouseWheelScrollLines: " + SystemInformation.MouseWheelScrollLines.ToString();
            label9.Text = "SystemInformation.NativeMouseWheelSupport: " + SystemInformation.NativeMouseWheelSupport.ToString();

        }

        private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
        {
            // Update the mouse path with the mouse information
            Point mouseDownLocation = new Point(e.X, e.Y);

            string eventString = null;
            switch (e.Button) {
                case MouseButtons.Left:
                    eventString = "L";
                    break;
                case MouseButtons.Right:
                    eventString = "R";
                    break;
                case MouseButtons.Middle:
                    eventString = "M";
                    break;
                case MouseButtons.XButton1:
                    eventString = "X1";
                    break;
                case MouseButtons.XButton2:
                    eventString = "X2";
                    break;
                case MouseButtons.None:
                default:
                    break;
            }

            if (eventString != null) 
            {
                mousePath.AddString(eventString, FontFamily.GenericSerif, (int)FontStyle.Bold, fontSize, mouseDownLocation, StringFormat.GenericDefault);
            }
            else 
            {
                mousePath.AddLine(mouseDownLocation,mouseDownLocation);
            }
            panel1.Focus();
            panel1.Invalidate();
        }

        private void panel1_MouseEnter(object sender, System.EventArgs e) 
        {
            // Update the mouse event label to indicate the MouseEnter event occurred.
            label1.Text = sender.GetType().ToString() + ": MouseEnter";
        }

        private void panel1_MouseHover(object sender, System.EventArgs e) 
        {
            // Update the mouse event label to indicate the MouseHover event occurred.
            label1.Text = sender.GetType().ToString() + ": MouseHover";
        }

        private void panel1_MouseLeave(object sender, System.EventArgs e) 
        {
            // Update the mouse event label to indicate the MouseLeave event occurred.
            label1.Text = sender.GetType().ToString() + ": MouseLeave";
        }

        private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            // Update the mouse path that is drawn onto the Panel.
            int mouseX = e.X;
            int mouseY = e.Y;
            
            mousePath.AddLine(mouseX,mouseY,mouseX,mouseY);
        }

        private void panel1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            // Update the drawing based upon the mouse wheel scrolling.
      
            int numberOfTextLinesToMove = e.Delta * SystemInformation.MouseWheelScrollLines / 120;
            int numberOfPixelsToMove = numberOfTextLinesToMove * fontSize;

            if (numberOfPixelsToMove != 0) {
                System.Drawing.Drawing2D.Matrix translateMatrix = new  System.Drawing.Drawing2D.Matrix();
                translateMatrix.Translate(0, numberOfPixelsToMove);
                mousePath.Transform(translateMatrix);
            }
            panel1.Invalidate();
        }
        private void panel1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) 
        {
            Point mouseUpLocation = new System.Drawing.Point(e.X, e.Y);
        
            // Show the number of clicks in the path graphic.
            int numberOfClicks = e.Clicks;
            mousePath.AddString("    " + numberOfClicks.ToString(), 
                        FontFamily.GenericSerif, (int)FontStyle.Bold, 
                        fontSize, mouseUpLocation, StringFormat.GenericDefault);

            panel1.Invalidate();
        }

        private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
        {    
            // Perform the painting of the Panel.
            e.Graphics.DrawPath(System.Drawing.Pens.DarkRed, mousePath);
        }

        private void clearButton_Click(object sender, System.EventArgs e)
        {
            // Clear the Panel display.
            mousePath.Dispose();
            mousePath = new System.Drawing.Drawing2D.GraphicsPath();
            panel1.Invalidate();
        }
    }
}

package MouseEvent;
import System.*;
import System.Drawing.*;
import System.Windows.Forms.*;

public class Form1 extends System.Windows.Forms.Form
{
    private System.Windows.Forms.Panel panel1;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.Label label3;
    private System.Windows.Forms.Label label4;
    private System.Windows.Forms.Label label5;
    private System.Windows.Forms.Label label6;
    private System.Windows.Forms.Label label7;
    private System.Windows.Forms.Label label8;
    private System.Windows.Forms.Label label9;
    private System.Windows.Forms.Button clearButton;
    private System.Drawing.Drawing2D.GraphicsPath mousePath;
    private System.Windows.Forms.GroupBox groupBox1;
    private int fontSize = 20;

    /** @attribute STAThread()
     */
    public static void main(String[] args)
    {
        Application.Run(new Form1());
    } //main

    public Form1()
    {
        mousePath = new System.Drawing.Drawing2D.GraphicsPath();

        this.panel1 = new System.Windows.Forms.Panel();
        this.label1 = new System.Windows.Forms.Label();
        this.clearButton = new System.Windows.Forms.Button();
        this.label2 = new System.Windows.Forms.Label();
        this.label3 = new System.Windows.Forms.Label();
        this.label4 = new System.Windows.Forms.Label();
        this.label5 = new System.Windows.Forms.Label();
        this.label6 = new System.Windows.Forms.Label();
        this.label7 = new System.Windows.Forms.Label();
        this.label8 = new System.Windows.Forms.Label();
        this.label9 = new System.Windows.Forms.Label();
        this.groupBox1 = new System.Windows.Forms.GroupBox();
        // Mouse Events Label
        this.label1.set_Location(new System.Drawing.Point(24, 504));
        this.label1.set_Size(new System.Drawing.Size(392, 23));
        // DoubleClickSize Label
        this.label2.set_AutoSize(true);
        this.label2.set_Location(new System.Drawing.Point(24, 48));
        this.label2.set_Size(new System.Drawing.Size(35, 13));
        // DoubleClickTime Label
        this.label3.set_AutoSize(true);
        this.label3.set_Location(new System.Drawing.Point(24, 72));
        this.label3.set_Size(new System.Drawing.Size(35, 13));
        // MousePresent Label
        this.label4.set_AutoSize(true);
        this.label4.set_Location(new System.Drawing.Point(24, 96));
        this.label4.set_Size(new System.Drawing.Size(35, 13));
        // MouseButtons Label
        this.label5.set_AutoSize(true);
        this.label5.set_Location(new System.Drawing.Point(24, 120));
        this.label5.set_Size(new System.Drawing.Size(35, 13));
        // MouseButtonsSwapped Label
        this.label6.set_AutoSize(true);
        this.label6.set_Location(new System.Drawing.Point(320, 48));
        this.label6.set_Size(new System.Drawing.Size(35, 13));
        // MouseWheelPresent Label
        this.label7.set_AutoSize(true);
        this.label7.set_Location(new System.Drawing.Point(320, 72));
        this.label7.set_Size(new System.Drawing.Size(35, 13));
        // MouseWheelScrollLines Label
        this.label8.set_AutoSize(true);
        this.label8.set_Location(new System.Drawing.Point(320, 96));
        this.label8.set_Size(new System.Drawing.Size(35, 13));
        // NativeMouseWheelSupport Label
        this.label9.set_AutoSize(true);
        this.label9.set_Location(new System.Drawing.Point(320, 120));
        this.label9.set_Size(new System.Drawing.Size(35, 13));
        // Mouse Panel
        this.panel1.set_Anchor(System.Windows.Forms.AnchorStyles.Top
            | System.Windows.Forms.AnchorStyles.Left
            | System.Windows.Forms.AnchorStyles.Right);
        this.panel1.set_BackColor(System.Drawing.SystemColors.get_ControlDark());
        this.panel1.set_Location(new System.Drawing.Point(16, 160));
        this.panel1.set_Size(new System.Drawing.Size(664, 320));
        this.panel1.add_MouseUp(
            new System.Windows.Forms.MouseEventHandler(this.panel1_MouseUp));
        this.panel1.add_Paint(new System.Windows.Forms.PaintEventHandler(
            this.panel1_Paint));
        this.panel1.add_MouseEnter(new System.EventHandler(
            this.panel1_MouseEnter));
        this.panel1.add_MouseHover(new System.EventHandler(
            this.panel1_MouseHover));
        this.panel1.add_MouseMove(
            new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove));
        this.panel1.add_MouseLeave(
            new System.EventHandler(this.panel1_MouseLeave));
        this.panel1.add_MouseDown(
            new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown));
        this.panel1.add_MouseWheel(
            new System.Windows.Forms.MouseEventHandler(this.panel1_MouseWheel));
        // Clear Button
        this.clearButton.set_Anchor(System.Windows.Forms.AnchorStyles.Top
            | System.Windows.Forms.AnchorStyles.Right);
        this.clearButton.set_Location(new System.Drawing.Point(592, 504));
        this.clearButton.set_TabIndex(1);
        this.clearButton.set_Text("Clear");
        this.clearButton.add_Click(new System.EventHandler(
            this.clearButton_Click));
        // GroupBox
        this.groupBox1.set_Anchor(System.Windows.Forms.AnchorStyles.Top
            | System.Windows.Forms.AnchorStyles.Left
            | System.Windows.Forms.AnchorStyles.Right);
        this.groupBox1.set_Location(new System.Drawing.Point(16, 24));
        this.groupBox1.set_Size(new System.Drawing.Size(664, 128));
        this.groupBox1.set_Text("System.Windows.Forms.SystemInformation");
        // Set up how the form should be displayed and add the controls
        // to the form.
        this.set_ClientSize(new System.Drawing.Size(696, 534));
        this.get_Controls().AddRange(new System.Windows.Forms.Control[] {
            this.label9, this.label8, this.label7, this.label6, this.label5,
            this.label4, this.label3, this.label2, this.clearButton,
            this.panel1, this.label1, this.groupBox1 });
        this.set_Text("Mouse Event Example");
        // Displays information about the system mouse.
        label2.set_Text("SystemInformation.DoubleClickSize: "
            + SystemInformation.get_DoubleClickSize().ToString());
        label3.set_Text("SystemInformation.DoubleClickTime: "
            + ((Int32)SystemInformation.get_DoubleClickTime()).ToString());
        label4.set_Text("SystemInformation.MousePresent: "
            + ((System.Boolean)SystemInformation.get_MousePresent()).ToString());
        label5.set_Text("SystemInformation.MouseButtons: "
            + ((Int32)SystemInformation.get_MouseButtons()).ToString());
        label6.set_Text("SystemInformation.MouseButtonsSwapped: "
            + ((System.Boolean)SystemInformation.get_MouseButtonsSwapped()).
            ToString());
        label7.set_Text("SystemInformation.MouseWheelPresent: "
            + ((System.Boolean)SystemInformation.get_MouseWheelPresent()).
            ToString());
        label8.set_Text("SystemInformation.MouseWheelScrollLines: "
            + ((Int32)SystemInformation.get_MouseWheelScrollLines()).
            ToString());
        label9.set_Text("SystemInformation.NativeMouseWheelSupport: "
            + ((System.Boolean)SystemInformation.
            get_NativeMouseWheelSupport()).ToString());
    } //Form1

    private void panel1_MouseDown(Object sender,
        System.Windows.Forms.MouseEventArgs e)
    {
        // Update the mouse path with the mouse information
        Point mouseDownLocation = new Point(e.get_X(), e.get_Y());

        String eventString = null;
        switch (e.get_Button()) {
            case MouseButtons.Left:
                eventString = "L";
                break;
            case MouseButtons.Right:
                eventString = "R";
                break;
            case MouseButtons.Middle:
                eventString = "M";
                break;
            case MouseButtons.XButton1:
                eventString = "X1";
                break;
            case MouseButtons.XButton2:
                eventString = "X2";
                break;
            case MouseButtons.None:
            default:
                break;
        }

        if (eventString != null) {
            mousePath.AddString(eventString, FontFamily.get_GenericSerif(),
                (int)FontStyle.Bold, fontSize, mouseDownLocation,
                StringFormat.get_GenericDefault());
        }
        else {
            mousePath.AddLine(mouseDownLocation, mouseDownLocation);
        }
        panel1.Focus();
        panel1.Invalidate();
    } //panel1_MouseDown

    private void panel1_MouseEnter(Object sender, System.EventArgs e)
    {
        // Update the mouse event label to indicate the MouseEnter event occurred.
        label1.set_Text(sender.GetType().ToString() + ": MouseEnter");
    } //panel1_MouseEnter

    private void panel1_MouseHover(Object sender, System.EventArgs e)
    {
        // Update the mouse event label to indicate the MouseHover event occurred.
        label1.set_Text(sender.GetType().ToString() + ": MouseHover");
    } //panel1_MouseHover

    private void panel1_MouseLeave(Object sender, System.EventArgs e)
    {
        // Update the mouse event label to indicate the MouseLeave event occurred.
        label1.set_Text(sender.GetType().ToString() + ": MouseLeave");
    } //panel1_MouseLeave

    private void panel1_MouseMove(Object sender,
        System.Windows.Forms.MouseEventArgs e)
    {
        // Update the mouse path that is drawn onto the Panel.
        int mouseX = e.get_X();
        int mouseY = e.get_Y();

        mousePath.AddLine(mouseX, mouseY, mouseX, mouseY);
    } //panel1_MouseMove

    private void panel1_MouseWheel(Object sender,
        System.Windows.Forms.MouseEventArgs e)
    {
        // Update the drawing based upon the mouse wheel scrolling.
        int numberOfTextLinesToMove =
            e.get_Delta() * SystemInformation.get_MouseWheelScrollLines() / 120;
        int numberOfPixelsToMove = numberOfTextLinesToMove * fontSize;

        if (numberOfPixelsToMove != 0) {
            System.Drawing.Drawing2D.Matrix translateMatrix =
                new System.Drawing.Drawing2D.Matrix();
            translateMatrix.Translate(0, numberOfPixelsToMove);
            mousePath.Transform(translateMatrix);
        }
        panel1.Invalidate();
    } //panel1_MouseWheel

    private void panel1_MouseUp(Object sender,
        System.Windows.Forms.MouseEventArgs e)
    {
        Point mouseUpLocation = new System.Drawing.Point(e.get_X(), e.get_Y());
        // Show the number of clicks in the path graphic.
        int numberOfClicks = e.get_Clicks();
        mousePath.AddString("    " + ((Int32)numberOfClicks).ToString(),
            FontFamily.get_GenericSerif(), (int)(FontStyle.Bold), fontSize,
            mouseUpLocation, StringFormat.get_GenericDefault());

        panel1.Invalidate();
    } //panel1_MouseUp

    private void panel1_Paint(Object sender,
        System.Windows.Forms.PaintEventArgs e)
    {
        // Perform the painting of the Panel.
        e.get_Graphics().DrawPath(System.Drawing.Pens.get_DarkRed(), mousePath);
    } //panel1_Paint

    private void clearButton_Click(Object sender, System.EventArgs e)
    {
        // Clear the Panel display.
        mousePath.Dispose();
        mousePath = new System.Drawing.Drawing2D.GraphicsPath();
        panel1.Invalidate();
    } //clearButton_Click
} //Form1

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0
Mostrar: