ApeForms | C# - WinForm临时对话框(消息框、提示框、输入框、密码框、单选框、多选框等)

简介: ApeForms一款基于WinForm实现的开源免费商用的UI库,其中提供了一套便于用户交互的临时对话框组件(Dialog),可用于快速创建开发中常见的交互对话框,例如:消息框、提示框、输入框、单选框、多选框等。ApeFree.ApeDialogs并不是一个包含Dialog实现的UI库,而是一套Dialog标准(提供了一套临时弹出对话框的实现标准)。 Dialog是界面开发过程中必不可少的组件,无论是桌面开发、Web前端开发、移动端开发,甚至命令行应用程序中的一次“Yes or No”的输入都可以看做是一次Dialog弹框。

ApeForms | Dialog组件

@[toc]

前言

ApeForms一款基于WinForm实现的开源免费商用的UI库,其中提供了一套便于用户交互的临时对话框组件(Dialog),可用于快速创建开发中常见的交互对话框,例如:消息框、提示框、输入框、单选框、多选框等。

ApeFree.ApeDialogs并不是一个包含Dialog实现的UI库,而是一套Dialog标准(提供了一套临时弹出对话框的实现标准)。 Dialog是界面开发过程中必不可少的组件,无论是桌面开发、Web前端开发、移动端开发,甚至命令行应用程序中的一次“Yes or No”的输入都可以看做是一次Dialog弹框。

示例

准备步骤

如下所示,创建Dialog提供器:

ApeFormsDialogProvider provider = DialogFactory.Factory.GetApeFormsDialogProvider();

消息对话框 MessageDialog

f1790a4200814ef0b5a544c886816d81[1].gif

            var dialog = provider.CreateMessageDialog(s =>
            {
   
   
                // 是否可取消
                s.Cancelable = true;
                // 修改确认键文本
                s.ConfirmOption.Text = "知道了";
                // 修改Dialog窗体尺寸
                s.DialogSize = new Size(400, 250);
                // 修改标题名
                s.Title = tbTitle.Text;
                // 修改文本内容
                s.Content = tbContent.Text;
            });
            dialog.Show();

输入对话框 InputDialog

5912ccbda82c4ad9bf15ab535f6272c6[1].gif

            var dialog = provider.CreateInputDialog(s =>
            {
   
   
                // 标题文本
                s.Title = tbTitle.Text;
                // 消息文本
                s.Content = tbContent.Text;
                // 输入框默认文本
                s.DefaultText = "You can set the default text in the input box by using the 'DefaultText' property.";
                // 是否可取消
                s.Cancelable = true;
                // 是否允许输入为空
                s.AllowEmpty = false;
                // 输入文本最大长度
                s.MaximumLength = 200;
                // 输入文本最小长度
                s.MinimumLength = 6;
                // 是否多行
                s.IsMultiline = false;
                // 确认按钮文本
                s.ConfirmOption.Text = "Confirm(确定)";
                // 取消按钮文本
                s.CancelOption.Text = "Cancel(取消)";
                // 清空按钮文本
                s.ClearOption.Text = "Clear(清空)";
            });

            dialog.Show();

            if (dialog.Result.IsCancel)
            {
   
   
                Toast.Show("取消输入");
            }
            else
            {
   
   
                Toast.Show($"输入内容为:{dialog.Result.Data}");
            }

多行输入对话框 MultiLineDialog

3c177bd837204464866e6195a9942b89[1].gif

            var dialog = provider.CreateInputDialog(s =>
            {
   
   
                // 标题文本
                s.Title = tbTitle.Text;
                // 消息文本
                s.Content = tbContent.Text;
                // 输入框默认文本
                s.DefaultText = "You can set the default text in the input box by using the 'DefaultText' property.";
                // 是否可取消
                s.Cancelable = true;
                // 是否允许输入为空
                s.AllowEmpty = false;
                // 输入文本最大长度
                s.MaximumLength = 200;
                // 输入文本最小长度
                s.MinimumLength = 6;
                // 是否多行
                s.IsMultiline = true;
                // 确认按钮文本
                s.ConfirmOption.Text = "Confirm(确定)";
                // 取消按钮文本
                s.CancelOption.Text = "Cancel(取消)";
                // 清空按钮文本
                s.ClearOption.Text = "Clear(清空)";
            });

            dialog.Show();

            if (dialog.Result.IsCancel)
            {
   
   
                Toast.Show("取消输入");
            }
            else
            {
   
   
                Toast.Show($"输入内容为:{dialog.Result.Data}");
            }

密码输入对话框PasswordDialog

1142834959f542a385ff00a014fab561[1].gif

            var dialog = provider.CreatePasswordDialog(s =>
            {
   
   
                s.Title = tbTitle.Text;
                s.Content = tbContent.Text + $"\r\n提示:密码至少要[6]位";
                s.PasswordChar = '●';
                s.PrecheckResult = password => password != null && password.Length >= 6;
            });

            dialog.Show();
            if (dialog.Result.IsCancel)
            {
   
   
                Toast.Show("取消输入");
            }
            else
            {
   
   
                Toast.Show($"输入密码为:{dialog.Result.Data}");
            }

提示对话框 PromptDialog

ede4e293024b44d3b198170985dd7ef0[1].gif

            var dialog = provider.CreatePromptDialog(s =>
            {
   
   
                // 标题文本
                s.Title = tbTitle.Text;
                // 消息文本
                s.Content = tbContent.Text;
                // 积极选项文本
                s.PositiveOption.Text = "Yes";
                // 消极选项文本
                s.NegativeOption.Text = "No";
            }, null);

            dialog.Show();

            if (dialog.Result.Data)
            {
   
   
                Toast.Show("结果:积极选项");
            }
            else
            {
   
   
                Toast.Show("结果:消极选项");
            }

单选对话框 SelectionDialog

15720f1003a34a7abbd8c5123bc47e02[1].gif

            var dialog = provider.CreateSelectionDialog(students, null, s =>
            {
   
   
                // 标题文本
                s.Title = tbTitle.Text;
                // 消息文本
                s.Content = tbContent.Text;
                // 设置预检查回调
                s.PrecheckResult = item =>
                    {
   
   
                        var b = item != null;
                        if (!b)
                        {
   
   
                            Toast.Show("至少要选一项哦!", 2000, null, ToastMode.Reuse);
                        }
                        return b;
                    };
                s.ItemDisplayTextConvertCallback = stu => $"{stu.Name} ({stu.Description})";
            });

            dialog.Show();
            if (dialog.Result.IsCancel)
            {
   
   
                Toast.Show("取消选择");
            }
            else
            {
   
   
                Toast.Show($"结果:{dialog.Result.Data.Name} , {dialog.Result.Data.Description}");
            }

示例类型及数据:

        class Student
        {
   
   
            public Student(string name, string description)
            {
   
   
                Name = name;
                Description = description;
            }
            public string Name {
   
    get; set; }
            public string Description {
   
    get; set; }
        }
            Student[] students = new Student[] {
   
   
                new Student("张三","一年级"),
                new Student("李四","三年级"),
                new Student("王二","五年级"),
                new Student("马六","五年级"),
            };

多选对话框 MultipleSelectionDialog

799a4121e0a64603b8b5923462e61beb[1].gif

            var dialog = provider.CreateMultipleSelectionDialog(students, null, s =>
            {
   
   
                // 标题文本
                s.Title = tbTitle.Text;
                // 消息文本
                s.Content = tbContent.Text;
                // 设置预检查回调
                s.PrecheckResult = item =>
                {
   
   
                    var b = item.Any();
                    if (!b)
                    {
   
   
                        Toast.Show("至少要选一项哦!", 2000, null, ToastMode.Reuse);
                    }
                    return b;
                };
                s.ItemDisplayTextConvertCallback = stu => $"{stu.Name} ({stu.Description})";
            });


            dialog.Show();
            if (dialog.Result.IsCancel)
            {
   
   
                Toast.Show("取消选择");
            }
            else
            {
   
   
                Toast.Show({
   
   mathJaxContainer[0]}"{s.Name}({s.Description})"))}");
            }

示例数据与单选对话框 SelectionDialog示例数据一致。


UI库安装与使用

请参考文章:《ApeForms | WinForm窗体UI美化库(Metro扁平风格)演示与安装》

6df947fa2672441fbeffad7ab236209f[1].gif


获取示例源码

ApeForms UI库源码地址:https://github.com/ApeFree/ApeFree.ApeForms
ApeForms Demo源码地址:https://github.com/ApeFree/ApeFree.ApeForms.Demo
下载体验Demo.exe网盘链接:https://landriesnidis.lanzouy.com/b011mr7rg 密码:26fx

相关文章
|
4月前
|
C#
|
3月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
2月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
203 0
|
2月前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
132 0
|
2月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
120 0
|
4月前
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
209 3
C#winform中使用SQLite数据库
|
4月前
|
数据库
C#Winform使用NPOI获取word中的数据
C#Winform使用NPOI获取word中的数据
200 2
|
7月前
|
JavaScript C#
C#winForm程序与html JS交互调用
C#winForm程序与html JS交互调用
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
35 3
|
2天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
27 12