C# 弹出框DialogForm

1.新建一个MyMessageBoxForm窗体,在界面中添加确认和取消两个按钮。

复制代码
using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class MyMessageBoxForm : Form
    {
        [System.Runtime.InteropServices.DllImport("user32")]
        private static extern IntPtr GetActiveWindow();//获取当前窗体的活动状态
        String msg = "";

        public delegate void TextEventHandler(string strText);
        public TextEventHandler TextHandler;
        public MyMessageBoxForm(String msg)
        {
            InitializeComponent();

            // 设置窗体为无边框样式
            this.FormBorderStyle = FormBorderStyle.None;

            // 设置透明键颜色(这里使用洋红色,你可以选择任何不常用的颜色)
            this.BackColor = Color.Magenta;
            this.TransparencyKey = Color.Magenta;
            this.msg = msg;
        }

        private void MyMessageBoxForm_Load(object sender, EventArgs e)
        {
            //要显示的消息
           Console.WriteLine(msg);
        }

       private void btn_ensure_Click(object sender, EventArgs e)
		{
   			if (null != TextHandler)
   			 {
    			//要返回的结果数据
      			String rsultData = "我是结果";
       			TextHandler.Invoke(rsultData);
      			DialogResult = DialogResult.OK;
 			}
		}

        private void btn_cancl_Click(object sender, EventArgs e)
        {
            TextHandler.Invoke(null);
            DialogResult = DialogResult.Cancel;
        }
    }
    public static class MyMessageBoxDialog
    {
        public static DialogResult Show(String message, out string strText)
        {
            string strTemp = string.Empty;

            MyMessageBoxForm inputDialog = new MyMessageBoxForm(message);
            inputDialog.TextHandler = (str) => { strTemp = str; };

            DialogResult result = inputDialog.ShowDialog();
            strText = strTemp;

            return result;
        }
    }
}

2.调用

复制代码
string result = string.Empty;
DialogResult dr = MyMessageBoxDialog.Show("aaaaa", out result);
if (dr == DialogResult.OK)
{
    Console.WriteLine("DialogResult"+ dr);
    Console.WriteLine("result = " + result);
}
else {
    Console.WriteLine("DialogResult" + dr);
}
相关推荐
a努力。5 小时前
国家电网Java面试被问:二叉树的前序、中序、后序遍历
java·开发语言·后端·面试
JAVA+C语言5 小时前
C++ 继承与派生
开发语言·c++
fiveym5 小时前
PXE启动菜单配置完全指南:打造高效网络装机入口
开发语言·网络·php
chao1898445 小时前
基于MATLAB实现NSGA-II算法
开发语言·算法·matlab
未来之窗软件服务5 小时前
幽冥大陆(五十七)ASR whisper-cli命令行使用 C语言—东方仙盟筑基期
c语言·开发语言·whisper·仙盟创梦ide·东方仙盟·东方仙盟自动化·东方仙盟商业开发
lly2024065 小时前
Foundation 网格 - 中型设备
开发语言
前端达人5 小时前
原生JavaScript vs 前端框架,2026年该怎么选?
开发语言·前端·javascript·前端框架·ecmascript
qq_377112375 小时前
JAVA的平凡之路——此峰乃是最高峰JVM-GC垃圾回收器(1)-06
java·开发语言·jvm
froginwe115 小时前
HTML 标题
开发语言
悠哉悠哉愿意5 小时前
【嵌入式学习笔记】任务调度器
开发语言·笔记·单片机·嵌入式硬件·学习