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](https://ucc.alicdn.com/pic/developer-ecology/n2ymwk47htkwq_97526437cf424d77bf841661f0eb516b.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](https://ucc.alicdn.com/pic/developer-ecology/n2ymwk47htkwq_d0187aaf3a674db9b97f608dcc66083b.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](https://ucc.alicdn.com/pic/developer-ecology/n2ymwk47htkwq_7741cf52a665456e88e1275de1f6a691.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](https://ucc.alicdn.com/pic/developer-ecology/n2ymwk47htkwq_5120f67447254dceb2415c2f74040d4f.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](https://ucc.alicdn.com/pic/developer-ecology/n2ymwk47htkwq_958e652781474e55ace2ec722b10be6e.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](https://ucc.alicdn.com/pic/developer-ecology/n2ymwk47htkwq_803a9aa995424d8ebc523af92cb00cbc.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](https://ucc.alicdn.com/pic/developer-ecology/n2ymwk47htkwq_72e9f1f0dd624a60a7a950ac3b6437bb.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](https://ucc.alicdn.com/pic/developer-ecology/n2ymwk47htkwq_5735e0e5a8604f42993e9f38c54094de.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