evExpress WinForms控件附带了许多标准的System.Windows.Forms.Form对象对应的对象,在v22.1版本发布新的表单选项之前,让我们一起看看当前所有可用的表单选项。
复制下面地址获取工具
https://www.evget.com/product/2348/download
XtraForm 是标准表单替换的默认选择,这是DevExpress中最基本的“可换肤”表单选项。
下面的列表总结了 XtraForm 中可用的一些独特功能:
大多数 XtraForm 功能也可用于 XtraForm 后代,例如工具栏表单。
这种类型的DevExpress表单的卖点非常短:在您计划添加功能区时使用它,此表单将其标题栏与我们的WinForms功能区控件合并来创建统一块。
这个表单选项将BarItems的两个区域嵌入到其标题栏中,当您不需要具有大量工具栏或功能区操作的专用命令区域时,工具栏表单是完美的。
Tabbed Form是为一种特定的 UI 隐喻而构建的——在表单标题栏区域带有选项卡的类似浏览器的窗口,您可以在设计时单击“+”按钮来添加选项卡,每个选项卡都包含自己的可以承载控件的内容容器。
Fluent Design Form绝对是DevExpress WinForms控件中最精致的Form选项。受 Windows 10 启发,此表单在其标题栏中提供操作(类似于工具栏表单中的操作)、基于表单宽度的自适应布局以及与其子 Accordion Control 的高级通信。此外,Form 的侧边区域呈现了半透明的亚克力材质。
最新的DirectX表单(在 v22.1 中可用)融合了技术团队在过去几年开始的所有突破性计划:高 DPI 支持、DirectX 渲染以及 HTML 和 CSS 模板。
此表单为所有能够使用 DirectX 渲染引擎的子控件启用 DirectX 硬件加速,与标准技术(当您翻转全局 WindowsFormsSettings.ForceDirectXPaint 开关时)相比,DirectX 表单具有以下优点:
注意:许多DevExpress WinForms控件(例如,电子表格)不支持 DirectX 呈现,如果您将它们放在 DirectX Form上,这些控件当前不会显示。
DirectX Forms 还接受 HTML 和 CSS 模板,它允许您设计受现代 Web UI 解决方案启发的酷炫表单,下图来自官方的演示中心,展示了此类自定义UI的示例。
初始 DirectX Form 的外观模仿标准 XtraForm 样式,此标准外观存储在默认模板中:
<dx-form-frame id="frame">
<dx-form-titlebar id="titlebar">
<dx-form-icon id="icon"></dx-form-icon>
<dx-form-text id="text"></dx-form-text>
<dx-form-minimizebutton id="minimizebutton"></dx-form-minimizebutton>
<dx-form-maximizebutton id="maximizebutton"></dx-form-maximizebutton>
<dx-form-closebutton id="closebutton"></dx-form-closebutton>
</dx-form-titlebar>
<dx-form-content id="content"></dx-form-content>
</dx-form-frame>
这个默认模板既不需要 CSS 样式也不需要按钮的 onClick 属性——这些标准元素的外观和操作是硬编码的,元素的外观取决于标签名称,其行为通过元素 ID 设置。例如,以下行添加了一个看起来像Close按钮,但行为类似于最小化按钮的按钮。
<dx-form-closebutton id="minimizebutton"></dx-form-closebutton>
此功能允许您在不需要自定义设计时使用标准表单元素,或快速设置自定义元素的行为。 例如,您可以从 <div> 元素创建自定义按钮,并将其 ID 设置为“closebutton”。
如果您的目标是完全自定义表单布局,请从以下模板开始。
<div id="frame" class="frame">
<div id="content">
</div>
</div>
.frame {
height: 100%;
}
这是您可以添加的最短的有效自定义模板 - 没有 "frame" 和 "content"元素 ID 的模板被视为无效。
DevExpress WinForm
DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
年一度的中秋节马上就到啦,小伙伴们收到月饼了吗。
记得我的学生时代,邮件祝福还风靡过一段时间,打开QQ邮箱,各种转发邮件和祝福邮件,现在想想都觉得有点久远了。
相信小伙伴们也都用过群发邮件的功能,例如QQ邮箱,163邮箱等都有提供这种功能,直接发送或者密送都可以。但都会存在一个问题,就是一键发送时,邮件内容都是一样的,无法针对收件人而有个性化的称呼。针对这个需求,我们可以做一个群发邮件的桌面端软件。
我们首先整理下我们需要实现的最简单的功能:
需求整理完成,说干就干。
首先新建一个窗体,定义为MainForm。将MainForm的初始状态修改为一打开就最大化。
this.WindowState = FormWindowState.Maximized;
我们可以用GroupBox将Mainform划分为三部分,“登录信息”,“收件人信息”,还有“邮件内容”,如图:
Tips:因为我们默认窗口最大化,所以我们需要先设置三个GroupBox的Anchor属性,依次分别为“Top,Bottom,Left”,“Top,Bottom,Left”和“Top,Bottom,Left,Right”。这样GroupBox就会随窗口大小变化而不至于打乱布局。
划分布局之后,在每一个GroupBox中增加我们需要的控件。
“登录信息”:
两个Label(标注“账号”与“密码”);
两个TextBox(用来输入账号与密码);
两个CheckBox(一个用来记住账户密码,一个用来隐藏密码)。
用TextBox输入密码时,我们可以设置TextBox的UseSystemPasswordChar属性为True,则我们输入的文字都会以密文显示。与CheckBox联动,默认勾选CheckBox时,密码以符号显示,不勾选CheckBox时,密码以明文显示。
代码如下:
private void cbShowPwd_CheckedChanged(object sender, EventArgs e)
{
if (this.cbShowPwd.Checked == true)
{
this.tbPassword.UseSystemPasswordChar = false;
}
else
{
this.tbPassword.UseSystemPasswordChar = true;
}
}
实际效果如图:
记住账户与密码涉及本地存储,我们后面具体写代码时再来实现这个功能,先按住不提。
“收件人信息”:
一个CheckBox(全选功能);
一个CheckListBox(用来显示导入的收件人信息);
两个Button(一个用来导入文件,一个用来确认选择收件人);
一个Label(用来显示已选择的收件人数量)。
关于CheckListBox的相关设置与全选功能具体可以查看我的上一篇文章(「Winform开发小技巧05」批量操作单号-CheckListBox)
全选功能代码:
private void cbSelectAll_CheckedChanged(object sender, EventArgs e)
{
//全选功能
if (this.cbSelectAll.Checked)
{
for (int i = 0; i < this.clbReceivers.Items.Count; i++)
{
if (!this.clbReceivers.GetItemChecked(i))
this.clbReceivers.SetItemChecked(i,true);
}
}
else
{
for (int i = 0; i < this.clbReceivers.Items.Count; i++)
{
if (this.clbReceivers.GetItemChecked(i))
this.clbReceivers.SetItemChecked(i, false);
}
}
}
这里的操作逻辑是:点击Button导入收件人=>CheckListBox显示收件人=>全选=>Label显示已选人数=>点击Button确认选择,收件人数据传输到下一个部分“邮件内容”。
导入功能我们可以写一个方法,这里先暂时不写。
我们可以先解决Label的显示问题。Label显示选择人数时,需要根据CheckListBox中Item的实时勾选状态进行变化,这个比较有趣,我们可以在CheckListBox的Itemcheck事件中实现。
代码如下:
private void clbReceivers_ItemCheck(object sender, ItemCheckEventArgs e)
{
//这个事件是指示某项的选中状态将要被更改、在更改前会执行这个事件
//所以checkedListBox.CheckedItems.Count获取的是更改之前的值
if (e.NewValue == CheckState.Checked)
{
this.lbSelectedCount.Text = "已选:"+(this.clbReceivers.CheckedItems.Count + 1).ToString();
}
else
{
this.lbSelectedCount.Text = "已选:" + (this.clbReceivers.CheckedItems.Count - 1).ToString();
}
}
实际效果如图:(因为还没有数据,为了展示效果,我先手动输入一些数据)
“邮件内容”:
两个Label;
两个TextBox(一个用来显示收件人,一个用来输入标题,显示收件人我们可以将其MultiLine属性设置为True,这样可以多行显示);
一个RichTextBox(用来输入正文内容,后期我们用Html来发送文件,RichTextBox方便我们输入段落及图片);
一个Button(用来确认发送邮件)。
效果如图:
至此,我们的布局就全部完成了!
但是大家又没有发现一个问题,由于Winfrom界面缩放问题,我们生成的界面有点模糊,很难看,针对这个问题,微软有专门的解决方案。
首先右键项目=>添加新建项=>添加应用程序清单文件。
打开app.manifest文件,取消application节点注释
打开App.config文件,添加节点EnableWindowsFormsHighDpiAutoResizing,值为true
此时我们重新按F5进行编译,可以发现界面分辨率正常了,瞬间好看不少有没有。
下篇文章,我们就开始正式编码了,或许可以赶上中秋给大家拜个晚年了,哈哈哈
如果各位觉得我写的对你有那么一点点帮助,欢迎一键三连~感激不尽~
印库允许您将DevExpress .NET控件导出为各种文档格式(PDF、HTML、MHT、TXT、CSV、XLS、RTF)和图像格式(BMP、JPEG、GIF、TIFF、PNG、EMF),本文演示如何使用Print Preview窗口和代码将控件导出为PDF格式。
DevExpress Universal Subscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网
提示:请注意,XtraPrinting 库无法将某些控件导出为特定格式,但是所有控件都可以导出为 PDF 或图像格式。
您可以使用Print Preview窗口将可打印控件导出为可用格式。
使用控件的 ShowPrintPreview 方法显示此窗口,下图说明了网格控件的打印预览窗口。
Print Preview表单顶部的工具栏显示Export Document… 按钮,单击此按钮可显示一个下拉菜单,您可以从中选择所需的导出文件格式。
要将页面或报表标题添加到报表中,请使用可打印链接(PrintableComponentLink)生成报表。
以下代码演示了如何使用 XtraPrinting 库方法在代码中将控件导出到 PDF 文件,而无需打印预览窗口。 控件 (XtraGrid) 通过 PrintingSystemBase.ExportToPdf方法导出为 PDF。
C#
using DevExpress.XtraPrinting;
// Create a PrintingSystem component.
DevExpress.XtraPrinting.PrintingSystem ps = new DevExpress.XtraPrinting.PrintingSystem();
// Create a link that will print a control.
DevExpress.XtraPrinting.PrintableComponentLink link = new PrintableComponentLink(ps);
// Specify the control to be printed.
link.Component = gridControl1;
// Generate a report.
link.CreateDocument();
// Export the report to a PDF file.
string filePath = @"c:\gridcontrol.pdf";
link.PrintingSystem.ExportToPdf(filePath);
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = filePath;
process.Start();
VB.NET
Imports DevExpress.XtraPrinting
' Create a PrintingSystem component.
Dim ps As New DevExpress.XtraPrinting.PrintingSystem()
' Create a link that will print a control.
Dim link As New DevExpress.XtraPrinting.PrintableComponentLink(ps)
' Specify the control to be printed.
link.Component = gridControl1
' Generate a report.
link.CreateDocument()
' Export a report to a PDF file.
Dim filePath As String = "c:\gridcontrol.pdf"
link.PrintingSystem.ExportToPdf(filePath)
Dim process As New System.Diagnostics.Process()
process.StartInfo.FileName = filePath
process.Start()
DevExpress WinForm
DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
*请认真填写需求信息,我们会在24小时内与您取得联系。