首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教一个自定义button类的有关问题

2012-01-30 
请问一个自定义button类的问题小弟现在写了一个button类,是可移动的button。代码如下usingSystemusingSyst

请问一个自定义button类的问题
小弟现在写了一个button类,是可移动的button   。代码如下
using   System;
using   System.Collections.Generic;
using   System.ComponentModel;
using   System.Data;
using   System.Drawing;
using   System.Text;

namespace   WindowsApplication1
{
        public   class   MoveButton   :   System.Windows.Forms.Button
        {
                bool   moveStart;
                Point   mousePosition;
                public   MoveButton()  
                {

                }
                protected   override   void   OnMouseDown   (System.Windows.Forms.MouseEventArgs   mevent)
                {
                        base.OnMouseDown(mevent);
                        moveStart   =   true;
                        mousePosition   =   mevent.Location;
                }
                protected   override   void   OnMouseMove(System.Windows.Forms.MouseEventArgs   mevent)
                {
                        base.OnMouseMove(mevent);
                        if   (moveStart)
                        {
                                int   movedX,   movedY;
                                movedX   =   mousePosition.X   -   mevent.X;
                                movedY   =   mousePosition.Y   -   mevent.Y;
                                this.Location   =   new   Point(this.Location.X   -   movedX,       this.Location.Y   -   movedY);          
                        }
                }
                protected   override   void   OnMouseUp(System.Windows.Forms.MouseEventArgs   mevent)
                {
                        base.OnMouseUp(mevent);
                        moveStart   =   false;
                }}
然后在form1内,new了一百个这样的button,代码如下:
public   Form1()
                {


                        InitializeComponent();
                        for   (int   i   =   0;   i   <   100;   i++)
                        {
                                int   TempInt   =   i   %   5;
                                int   TempInt2   =   (int)i   /   5;
                                MoveButton   myButton   =   new   MoveButton();
                                myButton.Size   =   new   Size(75,   25);
                                myButton.Text   =   "button "   +   (i   +   1);
                                myButton.Name   =   "button "   +   (i   +   1);
                                myButton.Left   =   0   +   TempInt   *   75;
                                myButton.Top   =   0   +   TempInt2   *   25;
                                this.Controls.Add(myButton);
    }   }
现在,想给这个movebutton类写一个自定义事件,就是如果这个button,被鼠标拖动超过了form的边框,能触发这个事件,并且使这个button不会移出此form,同时弹出messagebox,显示“button1(或者button2,3....100)超过移动范围”。请教各位大虾。小弟对于自定义事件还不了解。


[解决办法]
声明就可以了,然后就可以直接调用了。
public delegate void MyHandler(string msg);

public event MyHandler OnMyEvent;

在控件的move事件里处理
this.Move+=new EventHandler(button_Move);
private void button_Move(object sender, System.EventArgs e)
{
if(this.Left <this.FindForm().Left)
OnMyEvent( "超出左边界! ");
}

在button控件那里就会出现OnMyEvent事件

热点排行