public class button : Button
{ protected override void OnMouseMove(MouseEventArgs e)
{
this.BackColor = System.Drawing.Color.Red;
}
          }
在OnMouseLeave事件里面,把背景颜色还原就可以了吧

解决方案 »

  1.   

    yuewenbin(学习NET)的方法好
    onmouseover
      

  2.   

    to:interim (interim) 
      个人觉得,没有必要这样做,这样反而会增加自己的工作强度(不管能不能实现你的功能)。
    yuewenbin(学习NET) 的做法可以的。
      

  3.   

    yuewenbin(学习NET) ,我赞成你的方法,
    我也这样想的啊
    一般都是这种方法啊,楼主的说法好像不太行呢
      

  4.   

    靠!
    在下终于研究成功!!!把孔件放进 panl在作一个控件即可 只是,好像微软的工具有问题,当把做好的控件放到tabPage,在拿下来就可显示.负责不行.怪了
      

  5.   


     haohaohaohao()
    在上面说:你的意思是在设计面板上就让你的按钮响应你的鼠标消息???我现在知道什么叫异想天开,白日做梦了!!!
    唯一的办法,自己完全开发一个编译器,设计与调试实时结合!!================开玩笑!这叫异想天开?我已经成功,不信你时时!
      

  6.   

    http://www.developerfusion.com/show/4411/
    这里由你想要得答案
      

  7.   

    呵呵tabControl可以在设计时选择page
    所以,我说的那种控件当然可以做出了
      

  8.   

    自定义控件在设计时就可以进行操作的源代码
    我是参考了这个以后,才把我做的控件的一些bug去掉的
    大家可以看看关键是OnLoadhttp://www.codeproject.com/cs/miscctrl/yatoolbox/toolbox_src.zip要搞研究的朋友,可以先自己试着做,再看看这个源代码
      

  9.   

    还是没工具,直接写的,不知道有没问题。有问题的话,晚上用工具编一个再拷过来。
      写一个控件:代码自动生成就行。
    一定要 using System.ComponentModel; 程序的引用中要添  system.Design.dll 文件
    [Designer(typeof(RedButtonDesigner))] //这是调用设计时类(不要忘写)
    public class RedButton : System.Windows.Forms.Button再编写个这个设计时 类
    public class RedButtonDesigner : System.Windows.Forms.Design.ControlDesigner  // 继承ControlDesigner
    {
                     //下面两个方法是在设计时调用的。
       protected override void OnMouseEnter()
       {
                   this.Control.BackColor =Color.Red ;
       }
       protected override void OnMouseLeave()
       {
          this.Control.BackColor =Color.White ;
       }
    }
    注意改变设计时类代码后,要重新编译才有用。。
    设计时很有用,一般编报表特别好。。
    可以的话,看看 SharpDevelop  的。
      

  10.   

    protected override bool GetHitTest(Point point) 

    return true; 
    } protected override void OnMouseEnter() 

    this.Control.BackColor = Color.Red; 
      

  11.   

    贴我的代码:有设计时的颜色控制,还有右键设计控制
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;
    using System.Windows.Forms.Design;
    using System.ComponentModel.Design;namespace ButtonDesignerDemo
    {
    /// <summary>
    /// MyButton 的摘要说明。
    /// </summary>
    [Designer(typeof(MyButton.MyButtonDesigner))]
    public class MyButton : System.Windows.Forms.Button
    {
    internal class MyButtonDesigner : ControlDesigner 
    {
    private DesignerVerbCollection verbs = null; private void OnVerbRed(object sender, EventArgs e) 
    {
    Control.BackColor = Color.Red;
    } private void OnVerbGreen(object sender, EventArgs e)
    {
    Control.BackColor = Color.Green;
    } private void OnVerbBlue(object sender, EventArgs e) 
    {
    Control.BackColor = Color.Blue;
    } public override DesignerVerbCollection Verbs 
    {
    get 
    {
    if (verbs == null) 
    {
    verbs = new DesignerVerbCollection();
    verbs.Add(
    new DesignerVerb(
    "Red", 
    new EventHandler(OnVerbRed)));
    verbs.Add(
    new DesignerVerb(
    "Blue", 
    new EventHandler(OnVerbBlue)));
    verbs.Add(
    new DesignerVerb(
    "Green", 
    new EventHandler(OnVerbGreen)));
    }
    return verbs;
    }
    } protected override void OnMouseEnter() 

    this.Control.BackColor = Color.Pink; 
    } protected override void OnMouseLeave()
    {
    this.Control.BackColor = Color.Yellow;
    } }
    /// <summary> 
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public MyButton()
    {
    // 该调用是 Windows.Forms 窗体设计器所必需的。
    InitializeComponent(); // TODO: 在 InitializeComponent 调用后添加任何初始化 } /// <summary> 
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if(components != null)
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region 组件设计器生成的代码
    /// <summary> 
    /// 设计器支持所需的方法 - 不要使用代码编辑器 
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    components = new System.ComponentModel.Container();
    }
    #endregion
    }
    }