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小時內與您取得聯系。