C#WinFrom 中实现可自定义按钮和事件的消息提示框

news2024/11/14 13:59:01

实现效果:

 

public partial class CustomMessageBox : Form
{
    // 声明按钮和标签控件
    private Button btnOption1;
    private Button btnOption2;
    private Label lblMessage;

    // 自定义属性用于获取对话框的结果
    public DialogResult DialogResult1 { get; private set; }

    // 构造函数,初始化自定义消息框
    public CustomMessageBox(string message, string button1Text, string button2Text)
    {
        // 初始化消息标签并设置其属性
        lblMessage = new Label
        {
            Text = message, // 设置消息文本
            AutoSize = true, // 自动调整标签大小以适应文本
            Location = new System.Drawing.Point(20, 20), // 设置标签位置
        };

        // 初始化第一个选项按钮并设置其属性
        btnOption1 = new Button
        {
            Text = button1Text, // 设置按钮文本
            DialogResult = DialogResult.OK, // 设置按钮的对话框结果为 OK
            Location = new System.Drawing.Point(20, 80), // 设置按钮位置
            Size = new System.Drawing.Size(100, 40) // 设置按钮大小
        };
        // 为第一个按钮添加点击事件处理程序
        btnOption1.Click += (sender, e) =>
        {
            DialogResult1 = DialogResult.OK; // 设置对话框结果为 OK
            Close(); // 关闭对话框
        };

        // 初始化第二个选项按钮并设置其属性
        btnOption2 = new Button
        {
            Text = button2Text, // 设置按钮文本
            DialogResult = DialogResult.Cancel, // 设置按钮的对话框结果为 Cancel
            Location = new System.Drawing.Point(160, 80), // 设置按钮位置
            Size = new System.Drawing.Size(100, 40) // 设置按钮大小
        };
        // 为第二个按钮添加点击事件处理程序
        btnOption2.Click += (sender, e) =>
        {
            DialogResult1 = DialogResult.Cancel; // 设置对话框结果为 Cancel
            Close(); // 关闭对话框
        };

        // 将控件添加到表单中
        Controls.Add(lblMessage);
        Controls.Add(btnOption1);
        Controls.Add(btnOption2);

        // 设置对话框属性
        AcceptButton = btnOption1; // 设置接受按钮
        CancelButton = btnOption2; // 设置取消按钮

        // 设置对话框的其他属性
        Text = "提示!"; // 设置标题
        FormBorderStyle = FormBorderStyle.FixedDialog; // 设置边框样式
        StartPosition = FormStartPosition.CenterParent; // 设置启动位置
        ClientSize = new System.Drawing.Size(280, 180); // 设置客户区大小
    }

    // 静态方法用于显示对话框
    public static DialogResult Show(string message, string button1Text, string button2Text)
    {
        using (var form = new CustomMessageBox(message, button1Text, button2Text))
        {
            return form.ShowDialog(); // 显示对话框并返回结果
        }
    }
}

使用:

 var result = CustomMessageBox.Show("需求数量已完成是否重置", "重置", "取消");
 if (result == DialogResult.OK)
 {
     //点击重置按钮触发的事件
 }
 else {
     //点击取消按钮触发的事件
 }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2079921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文弄懂SQL事务隔离级别

SQL 事务隔离级别 在多用户数据库系统中,为了保证数据的完整性和一致性,SQL 标准提出了四种事务隔离级别,以规避脏读、不可重复读和幻读等问题。以下是四种隔离级别的简要介绍: 读未提交(read uncommitted&#xff09…

产业报告 | 2024年中国低空经济产业研究报告

低空经济是指以各种有人驾驶和无人驾驶航空器的各类低空飞行活动为牵引,辐射带动航空器研发、生产、销售以及低空飞行活动相关的基础设施建设运营、飞行保障、衍生综合服务等领域产业融合发展的综合经济形态。 基于启信产业大脑的海量数据与专业研判模型&#xff0…

【Linux C++】log4cpp日志库的安装和使用详解

log4cpp 是一个开源的 C 日志库,灵感来源于 Java 的 log4j。它提供了灵活的日志记录功能,可以帮助开发者在 C 应用程序中记录、管理和格式化日志信息。log4cpp 支持多种日志记录策略和输出目标,可以满足各种不同的需求。 1.安装 下载压缩包…

2.2.2 Posix API与网络协议栈2

接上回2.2.2 posix api 2 传输数据 四线一⚪,kernel 协议栈 send- write, recv-read 如何知道send成功? 如果返回整数,只能证明data从user copy到内核kernel wmemory了 就是数据传输是异步的,send是从application cop…

二叉树的层序遍历 C++

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]示例 2: 输入&…

李宏毅 机器学习与深度学习【2022版】 02

文章目录 一、机器学习任务攻略二、优化失败1、梯度很小的情况2、Batch and Momentum 三、自适应学习率 Adaptive Learning Rate四、分类问题简述五、重温神奇宝贝和数码宝贝分类器六、深度学习的优化 一、机器学习任务攻略 因为在训练集中,56层的network一定至少和…

等保测评(三级)服务器和终端-测评项及整改措施(详细)

本文按照三级等保标准进行测评,可参考进行加固。 等保测评是信息安全等级保护工作的基本制度、基本策略和基本方法。 等保测评是信息安全等级保护工作的基本制度、基本策略和基本方法。信息系统运营、使用单位应选择符合国家要求的测评机构,依据《信息…

Java中常用的API

具体的例子就不再列出了 自己尝试 // 注意第三个方法 1.如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错 2.如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型 public cl…

并发服务器---IO多路复用

单循环服务器:同一时刻只能处理一个客户端任务 并发服务器: 同一时刻,只能处理多个客户端的任务 实现方法:多进程 多线程 IO多路复用 IO多路复用: 1.阻塞io(fgets scanf recv getchar read&#x…

【python计算机视觉编程——1.基本的图像操作和处理】

python计算机视觉编程——1.基本的图像操作和处理 1.基本的图像操作和处理1.1 PIL:Python图像处理类库1.1.1 转换图像格式1.1.2 创建缩略图1.1.3 复制和粘贴图像区域1.1.4 调整尺寸和旋转 1.2 Matplotlib1.2.1绘制图像、点和线1.2.2 图像轮廓和直方图 1.3 Numpy1.3.1 图像数组表…

【STM32】DMA

描述 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 0 概述 1 原理(用于个人理解的,非常重要!) 1.1 DMA请求 1.2 循环模式与DMA请求的关系 1.3 …

以科研为本 创新突破的品牌理念 朵拉朵尚荣获2023年度影响力品牌奖

以科研为本 创新突破的品牌理念 朵拉朵尚荣获2023年度影响力品牌奖 随着国内美妆行业经过数十年的快速发展,已经形成了数千亿规模的产业链,在产业集聚、行业新技术不断涌现、产业链持续优化等背景下,美妆行业该如何通过科技创新,…

流量太炸裂了!一键AI替换视频人物,几分钟极速制作爆款视频!

目录 一、案例分析 二、制作教程 1.1、通义千问APP——角色扮演 1.2、Motionshop 1.3、Wonder Studio 1.4、Viggle 三、结束语 最近网上火了一种新玩法:用AI技术,一键就能把视频里的人物换成机器人或者任何你想要的角色。就像之前那些视频&#x…

二叉树高频题目-上-不含树型dp

二叉树高频题目-上-不含树型dp 题目1 : 二叉树的层序遍历 测试链接 : https://leetcode.cn/problems/binary-tree-level-order-traversal/ 思路 自己使用数组实现队列, 在队列中进行广度优先遍历先将根结点进队, 如果队列里还有东西, 按照队列大小进行循环, 让队列里的结点进…

创建一个最简单的FastAPI

如何生成一个最简单的 FastAPI 文件? FastAPI官方文档:https://fastapi.tiangolo.com/zh/tutorial/first-steps/ # -*- coding: utf-8 -*-""" file: main.py author: CSDN-北极的三哈 time: 2024/8/27 22:11 email:flymeawei163.com so…

【自动驾驶】控制算法(六)前馈控制与航向误差

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

Python爬虫使用实例_1

Python爬虫使用实例 —— 续 IDE: Pycharm or Jupyter Notebook 6. 网易云歌榜 🥝 获取地址 记得把#/去掉就好,一定要记得,否则没用。 热歌榜的url是 https://music.163.com/discover/toplist?id3778678 ,同理可得其他榜的ur…

Java设计模式之单例模式详细讲解和案例示范

单例模式(Singleton Pattern)是Java设计模式中最简单但却非常实用的一种。它确保一个类只有一个实例,并提供一个全局的访问点。本文将通过电商交易系统为例,详细探讨单例模式的使用场景、常见问题及解决方案。 1. 单例模式简介 …

【LeetCode Cookbook(C++ 描述)】平衡二叉树

目录 平衡二叉树基础不同插入节点方式的不同旋转LL 型失衡RR 型失衡LR 型失衡RL 型失衡 删除操作删除节点为二叉树的叶子节点删除的节点只有左子树或者右子树删除的节点既有左子树又有右子树 LeetCode #110:Balanced Binary Tree 平衡二叉树递归法(自底向…

[C++番外] 抛异常

一、C语言的时候我们怎么判断错误的呢? C语言的错误处理机制: 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查…