C# 将按钮控件封装为用户控件

student_jianwen 2011-05-27 08:05:28
将WINDOWS的按钮控件封装为用户控件,常用事件与属性要暴露
在点击后将按钮变灰,在完成按钮事件后,再变为可用 没用户过自定义用户控件 自己也写了个自定义控件 但是其里面的事件就没有反应了· 急···· 麻烦各位帮小弟解决这个问题 还有一个就是 这个是用于做 C/S 的
...全文
480 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
student_jianwen 2011-05-27
  • 打赏
  • 举报
回复
你这个项目是在哪里面写、? 貌似我那用的是继承的是 UserControl 你这个是新建哪个项目??
isjoe 2011-05-27
  • 打赏
  • 举报
回复

// 继承按钮类
public partial class MyBtn : Button
{
/// <summary>
/// 构造
/// </summary>
public MyBtn()
{
InitializeComponent();
// 添加一个单机事件
this.Click += new EventHandler(MyBtn_Click);
}

/// <summary>
/// 此事件会在用户点击之前执行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MyBtn_Click(object sender, EventArgs e)
{
this.Enabled = false;
}

/// <summary>
/// 重写按钮事件,用户处理完成后,恢复按钮
/// </summary>
/// <param name="e"></param>
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
this.Enabled = true;
}

}

isjoe 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 student_jianwen 的回复:]
封装个按钮控件,在点击后将按钮变灰,在完成按钮事件后,再变为可用 能说下这个怎么实现吗? 我第一次接触这个自定义用户控件· 有代码解释那就更好了 麻烦各位····
[/Quote]

我刚看出来,你这个需求和按钮本身没有关系了,而是处理事件方式
student_jianwen 2011-05-27
  • 打赏
  • 举报
回复
封装个按钮控件,在点击后将按钮变灰,在完成按钮事件后,再变为可用 能说下这个怎么实现吗? 我第一次接触这个自定义用户控件· 有代码解释那就更好了 麻烦各位····
isjoe 2011-05-27
  • 打赏
  • 举报
回复

你从哪里继承的?如何控件拥有按钮特效,最好按如下的基类继承:


public class MyButtonBase : System.Windows.Forms.Control,IButtonControl

or

public class MyButtonBase : System.Windows.Forms.ButtonBase,
xuexiaodong2009 2011-05-27
  • 打赏
  • 举报
回复
你是继承了按钮?这种应该是没问题的
做个了用户控件,上边放了个按钮?肯定有问题,把按钮作为共有的在外部注册事件
isjoe 2011-05-27
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
// 继承按钮类
public partial class MyBtn : Button
{
/// <summary>
/// 构造
/// </summary>
public MyBtn()
{
InitializeComponent();
// 添加一个单机事件
this.Click += new EventHandler(MyBtn_Click);
}

/// <summary>
/// 此事件会在用户点击之前执行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MyBtn_Click(object sender, EventArgs e)
{
this.Enabled = false;
}

/// <summary>
/// 重写按钮事件,用户处理完成后,恢复按钮
/// </summary>
/// <param name="e"></param>
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
this.Enabled = true;
}

}
}

[code=C#]
namespace WindowsFormsApplication1
{
partial class MyBtn
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region 组件设计器生成的代码

/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}

#endregion
}
}


[/code]
isjoe 2011-05-27
  • 打赏
  • 举报
回复
然后改改继承类,就可以了。
isjoe 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 student_jianwen 的回复:]
引用 9 楼 isjoe 的回复:
引用 6 楼 student_jianwen 的回复:
你这个项目是在哪里面写、? 貌似我那用的是继承的是 UserControl 你这个是新建哪个项目??


新建类,不是用户控件


新建的是类就找不到 public MyBtn()
{
InitializeComponent();
// 添加一个单机事件
this.C……
[/Quote]


错了,我新建的是组件类,不是类库。。。。。。
student_jianwen 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 isjoe 的回复:]
引用 6 楼 student_jianwen 的回复:
你这个项目是在哪里面写、? 貌似我那用的是继承的是 UserControl 你这个是新建哪个项目??


新建类,不是用户控件
[/Quote]

新建的是类就找不到 public MyBtn()
{
InitializeComponent();
// 添加一个单机事件
this.Click += new EventHandler(MyBtn_Click);
}

就找不到 InitializeComponent(); 这个东西找不着了。。
isjoe 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 student_jianwen 的回复:]
你这个项目是在哪里面写、? 貌似我那用的是继承的是 UserControl 你这个是新建哪个项目??
[/Quote]

新建类,不是用户控件
student_jianwen 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xuexiaodong2009 的回复:]
引用 6 楼 student_jianwen 的回复:

你这个项目是在哪里面写、? 貌似我那用的是继承的是 UserControl 你这个是新建哪个项目??

这个需要手动改一下继承UserControl 的就可以了
[/Quote]

我把继承的类 改成 Button 出错了 说找不到这个 AutoScaleMode 是否还要 using 哪个东西
xuexiaodong2009 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 student_jianwen 的回复:]

你这个项目是在哪里面写、? 貌似我那用的是继承的是 UserControl 你这个是新建哪个项目??
[/Quote]
这个需要手动改一下继承UserControl 的就可以了

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧