在C#如何以这种模式进行按钮的控制编程?

zhuhaoonly 2010-12-07 02:16:36
通常情况下,我们编程都是每一个按钮下面去完成一个功能,就会把完成功能的函数写在这个按钮下面,由于这么做的话对于代码的复用性就比较局限,现在我想通过定义名字的方法去完成每一个按钮的调用,大致说明情况是这样:
第一层是GUI层

第二层是MSG层

第三层是处理层

第四层是具体的功能函数

详细说明一下:首先第一次表示界面,界面上面有各种按钮,点击按钮会发送一条定义好的命令到消息处理层,消息处理层接收到这条代码某一个功能的消息之后进行处理,通过这个消息去调用要完成这个功能的函数

现在我知道在C#中可以定义如下格式的文件:
//Serial Communications Defintions
#define ssCOM1 1
#define ssCOM2 2
#define ssCOM3 3
#define ssCOM4 4
#define ssCOM5 5
#define ssCOM6 6

#define ssBPS9600 9600
#define ssBPS19200 19200

#define ssParityNone 0
#define ssParityOdd 1
#define ssParityEven 2

#define ssStopBits1 1
#define ssStopBits2 2

#define ssDataBits7 7
#define ssDataBits8 8

//Definitions for AEC area selection

#define ssAEC_FIELD_LEFT 0
#define ssAEC_FIELD_CENTER 1
#define ssAEC_FIELD_RIGHT 2

#define ssAEC_DENSITY_M2 0
#define ssAEC_DENSITY_M1 1
#define ssAEC_DENSITY_0 2
#define ssAEC_DENSITY_1 3
#define ssAEC_DENSITY_2 4


如果是在C#中该如何来完成啊?有了这个思路但是就是不知道该如何去实时,希望可以给我点帮助!谢谢各位了!
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinodzh 2010-12-07
  • 打赏
  • 举报
回复
消息传递机制(事件在怎么掩饰,最后还是到这里来了)
反射
zhuhaoonly 2010-12-07
  • 打赏
  • 举报
回复
用Switch()
{
case:
....
break;


}

如果写的比较多的话是否会降低程序运行的效率?
happyrain2010 2010-12-07
  • 打赏
  • 举报
回复
每个控件设置tag
在发生事件时候发送一个自定义的事件把tag传过去
在自定义事件的函数中 根据tag处理调用不同的函数
ZengHD 2010-12-07
  • 打赏
  • 举报
回复
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
private const int WM_USER = 0x0400;
private const int WM_BUTTON1 = WM_USER + 1;
private const int WM_BUTTON2 = WM_USER + 2;
private const int WM_BUTTON3 = WM_USER + 3;

private void button1_Click(object sender, EventArgs e)
{
SendMessage(this.Handle,WM_BUTTON1,0,0);
}

private void button2_Click(object sender, EventArgs e)
{
SendMessage(this.Handle, WM_BUTTON2, 0, 0);
}

private void button3_Click(object sender, EventArgs e)
{
SendMessage(this.Handle, WM_BUTTON3, 0, 0);
}

protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_BUTTON1:
MessageBox.Show("1");
break;

case WM_BUTTON2:
MessageBox.Show("2");
break;

case WM_BUTTON3:
MessageBox.Show("3");
break;
}
base.WndProc(ref m);
}

110,539

社区成员

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

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

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