IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Winform 用委托做一个计算器+多个控件的事件绑定到一个方法上 -> 正文阅读

[开发工具]Winform 用委托做一个计算器+多个控件的事件绑定到一个方法上

目录

视频演示

要求

源代码

多个控件的事件绑定到一个方法上


?

?

视频演示

用委托实现简单的计算器

要求

用委托实现简单的加减乘除运算计算器并显示结果,用户可以选择直接输入数字或操作符,也可以选择点击屏幕上的数字和操作符。

源代码

详细注释已写,请自行选择食用

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 委托
{
    public delegate int Caculate(int x, int y);//定义委托
    public partial class Form1 : Form
    {
        public Caculate handle;//声明委托,handle现在为null
        MyMath math = new MyMath();//实例化MyMath类
        int OP1;//定义两个操作数
        int OP2;
        bool IsC = true;//用于判断输入的数是运算符还是操作数,当前为true
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button15_Click(object sender, EventArgs e)
        {

        }
        public void Sum_(object sender, EventArgs e)//将所有的数字button的click事件绑定在这一个方法中
        {
            if (sender is Button)//判断点击的是否为button
            {
                Button button = (Button)sender;
                if (IsC)//输入第一个操作数时进入
                {
                    textBox1.Text += button.Text;
                }
                else//输入第二个操作数时进入
                {
                    IsC = true;//提前将下次输入的运算符,认定为第一个操作数
                    textBox1.Text = button.Text;
                }
            }
        }
        public void Sca_(object sender, EventArgs e)
        {
            IsC = false;//提前将下次输入的运算符,认定为第二个操作数
            if (handle == null)//当委托没有指向任何方法时,此时一定只有一个操作数,且为第一个
            {
                OP1 = Convert.ToInt32(textBox1.Text);
            }
            else
            {
                OP2 = Convert.ToInt32(textBox1.Text);
                OP1 = handle(OP1, OP2);//将两个操作数,通过委托传给MyMath的方法
                //通过这里我们知道委托就相当与一个指针,它指向一个方法
                textBox1.Text = OP1.ToString();//填充运算后结果
            }
            if (sender is Button)
            {
                Button button = (Button)sender;
                switch (button.Text)
                {
                    case "+":
                        handle +=math.Add;
                        //委托常用语法糖
                        break;
                    case "-":
                        handle += new Caculate(math.Sub);
                        break;
                    case "*":
                        handle += new Caculate(math.Mul);
                        break;
                    case "/":
                        handle += new Caculate(math.Div);
                        break;
                    case "=":
                        handle = null;//委托制空,避免产生方法链影响运算结果。
                        break;
                }
            }
        }
    }

    public class MyMath
    
    {
        public int Add(int x,int y) { return x + y; }
        public int Sub(int x, int y) { return x - y; }
        public int Mul(int x, int y) { return x * y; }
        public int Div(int x, int y) { return x /y; }
    }
}

?

多个控件的事件绑定到一个方法上

弟0步 先在form类中写一个公用的方法这个就是我们需要绑定的方法

第1步 先将需要绑定的控件全部选中

第2步 右击鼠标打开属性界面

第3步 选择闪电图标

第4步 找到click事件(这里以click事件为例也可以选用其他事件)

第5步 点开click事件中的下拉菜单找到需要绑定的方法将其选中

第6步 完美收工

4b4ddc64c0464b85ad80fdba0ae04158.png

?

?

?

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:11:00  更:2022-05-21 19:12:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:57:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码