前几天在网上看见一个制作计算器的c#程序,其中有一个动态注册按钮事件,觉的很有用。于是实际操作了一哈, 确实比较好。

言归正传,下面就来讲讲怎样动态注册按钮事件。 
首先,我们需要设置变量来获取点击一个数字按钮的值,以便在“=”按钮单击事件中计算最终的结果。下面就是我开始的时候写的一段代码:

public double? value1 = null ;//获取运算符前的数值 
public double? value2 = null ;//获取运算符前的数值 
public type caltype=type .none ;//获取运算符 
private void btnvalue1_Click(object sender, EventArgs e) 

if (value1 == null) 

value1 = Convert.ToDouble(btnvalue1.Text); 

else 

value2 = Convert.ToDouble(btnvalue1.Text); 

this.txtvalue.Text = btnvalue1.Text; 
}“1”按钮的单击事件

一共有十个这样的数字键按钮单击事件 
是不是觉得这样写很麻烦,于是就有了按钮注册事件。下面是我后面下的一段代码:

public double? value1 = null ;//获取运算符前的数值 
public double? value2 = null ;//获取运算符后的数值 
public type caltype=type .none ;//获取运算符 
private void Form1_Load(object sender, EventArgs e) 

btnvalue0.Click += new EventHandler(btnvalue_Click); 
btnvalue1.Click += new EventHandler(btnvalue_Click); 
btnvalue2.Click += new EventHandler(btnvalue_Click); 
btnvalue3.Click += new EventHandler(btnvalue_Click); 
btnvalue4.Click += new EventHandler(btnvalue_Click); 
btnvalue5.Click += new EventHandler(btnvalue_Click); 
btnvalue6.Click += new EventHandler(btnvalue_Click); 
btnvalue7.Click += new EventHandler(btnvalue_Click); 
btnvalue8.Click += new EventHandler(btnvalue_Click); 
btnvalue9.Click += new EventHandler(btnvalue_Click); 
//通过EventHandler将按钮控件的Click事件 
绑定到 btnvalue_Click上面,从而动态注册按钮事件 

private void btnvalue_Click(object sender, EventArgs e) 

Button btn =(Button)sender ; 
//实例化按钮,从而获取当前单击按钮的值 
if (value1 == null) 

value1 = Convert.ToDouble(btn.Text); 

else 

value2 = Convert.ToDouble(btn.Text); 

this.txtvalue.Text = btn.Text; 
}

一个事半功倍的c#方法 动态注册按钮事件的更多相关文章

  1. 安卓入门 使用android创建一个项目 从启动activity中响应按钮事件 启动另一个activity 并传递参数

    启动android studio创建一个新项目 public void sendMessage(View view){ Intent intent=new Intent(this,DispalyMes ...

  2. 某APK中使用了动态注册BroadcastReceiver,Launcher中动态加载此APK出现java.lang.SecurityException异常的解决方法

    在某APK中,通过如下方法动态注册了一个BroadcastReceiver,代码参考如下: @Override protected void onAttachedToWindow() { super. ...

  3. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

  4. SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架

    1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...

  5. Android只能动态注册的广播Action

    只能动态注册的广播(部分): android.intent.action.SCREEN_ON android.intent.action.SCREEN_OFF android.intent.actio ...

  6. OD调试器调试Delphi程序按钮事件断点方法

    这几天我调试一个Delphi程序,总是无法断点按钮事件,像我这样的菜鸟断点按钮事件真心累啊.所以我分享一下我下断点的经验!希望新手们少走弯路!!   工具/原料   OD调试器 Delphi程序 方法 ...

  7. JNI动态注册native方法及JNI数据使用

    前言 或许你知道了jni的简单调用,其实不算什么百度谷歌一大把,虽然这些jni绝大多数情况下都不会让我们安卓工程师来弄,毕竟还是有点难,但是我们还是得打破砂锅知道为什么这样干吧,至少也让我们知道调用流 ...

  8. Android Studio NDK JNI动态注册本地方法

    概述 可能大家觉得javah生成的函数名又臭又长,不太好看.这里可以提供另外一种方法来动态注册c++函数,让其根Java中的native方法关联起来. 实现 这里通过JNIEnv的Resisterna ...

  9. Android学习笔记(十一)BroadcastReceiver动态注册、注销示例

    在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册.注销BroadcastReceiver的栗子. 1.首先创建一个MyReceiver并继承Br ...

随机推荐

  1. ES6 iterator 迭代器

    iterator使用TypeScript 的描述: interface Iterable { [Symbol.iterator]() : Iterator, } interface Iterator ...

  2. Android源码-SignApk.java

    /* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Versi ...

  3. 基于Python-Flask实现的网站例子

    概述 使用Flask写的体育网站 包括(注册 论坛 文章评论 组建战队 后台管理)等功能 示例地址文中有写 萌新 请多指教 详细 代码下载:http://www.demodashi.com/demo/ ...

  4. js 获取select的值 / js动态给select赋值

    jQuery获取Select选择的Text和Value:语法解释:1. $("#select_id").change(function(){//code...});   //为Se ...

  5. python-__init__.py 与模块对象的关系

    python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的. ...

  6. css-id选择器

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. LaTeX 图片插入

    一般格式: \begin{figure} \centering \includegraphics[scale=0.2]{Figure211.png} \caption{In the case of a ...

  8. 采集音频和摄像头视频并实时H264编码及AAC编码

    转自:http://www.cnblogs.com/haibindev/archive/2011/11/10/2244442.html 0. 前言 我在前两篇文章中写了DirectShow捕获音视频然 ...

  9. sql getdate()生成单据号

    select replace( replace( replace( replace(convert(varchar(23),getdate(),121),'-',''),':',''),' ','') ...

  10. Scroller应用:ListView滑动删除

    1.设计思路 在Scroller的应用--滑屏实现中使用Scroller实现滑屏效果,这里使用Scroller与ListView实现相似QQ滑动.然后点击删除功能.设计思路是Item使用Scrolle ...