首页 > 代码库 > C# 命令绑定
C# 命令绑定
在构建WinForm程序中,为了使系统的结构清晰,有好的用户交互体验,实现不同按钮之间的交互,不使主窗体里面的代码臃肿。将按钮的命令通过类进行绑定,实现命令的管理使很有必要的。
该文章是将如何实现Button的按钮事件绑定的。
1、新建WinForm程序
2、添加3个Button按钮,如下图所示
3、新建ICommand.cs接口,代码如下
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace commandTest{ //命令接口 public interface ICommand { void OnClick(); void New(); void Refresh(); }}
4、新建命令管理类CommandUnitily.cs,代码如下
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace commandTest{ class CommandUnitily { //创建命令集合 private static List<ICommand> cmds = new List<ICommand>(); //将命令添加到集合里面 public static void CmdRegist(ICommand cmd) { cmds.Add(cmd); } //刷新所有命令,用于命令直接的相互影响 public static void AllRefresh() { foreach (ICommand cmd in cmds) { cmd.Refresh(); } } }}
5、新建Button按钮通用类ButtonTool.cs,代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;namespace commandTest{ //button控件公用类,继承自ICommand接口 class ButtonTool : ICommand { private Button bt; void bt_Click(object sender, EventArgs e) { OnClick(); CommandUnitily.AllRefresh();//所有按钮都刷新,包括按钮本身 } //使用virtual关键词之后,调用OnClick方法之后, //会调用派生类(举例:Button1Click)中的OnClick, //从而实现各自的button点击事件 public virtual void OnClick() { Console.WriteLine("点击button事件"); } public void New(Button but) { bt = but; bt.Click += new EventHandler(bt_Click); } public void Refresh() { Console.WriteLine(bt.Name+"刷新"); } public void New() { throw new NotImplementedException(); } }}
6、创建Button1Click.cs点击类,代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;namespace commandTest{ //创建Button1事件执行类,继承自ButtonTool class Button1Click : ButtonTool { public Button1Click(Button obj) { Console.WriteLine("button1注册成功"); this.New(obj); } //重写ButtonTool类的OnClick方法,用于实现Button1的点击事件 public override void OnClick() { base.OnClick(); Console.WriteLine("点击button1事件"); } } }
7、主窗体Form.cs代码如下:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace commandTest{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { CommandUnitily.CmdRegist(new Button1Click(button1));
Console.WriteLine("窗体加载完毕"); } }}
8、文件结构如下:
9、测试
从窗体加载到点击button1测试的结果如下图:
可以借鉴Button1Click.cs类实现button2和button3的按钮点击事件
源代码:http://pan.baidu.com/s/1eSwoh5C
C# 命令绑定
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。