Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
evExpress WinForms控件附帶了許多標(biāo)準(zhǔn)的System.Windows.Forms.Form對(duì)象對(duì)應(yīng)的對(duì)象,在v22.1版本發(fā)布新的表單選項(xiàng)之前,讓我們一起看看當(dāng)前所有可用的表單選項(xiàng)。
復(fù)制下面地址獲取工具
https://www.evget.com/product/2348/download
XtraForm 是標(biāo)準(zhǔn)表單替換的默認(rèn)選擇,這是DevExpress中最基本的“可換膚”表單選項(xiàng)。
下面的列表總結(jié)了 XtraForm 中可用的一些獨(dú)特功能:
大多數(shù) XtraForm 功能也可用于 XtraForm 后代,例如工具欄表單。
這種類(lèi)型的DevExpress表單的賣(mài)點(diǎn)非常短:在您計(jì)劃添加功能區(qū)時(shí)使用它,此表單將其標(biāo)題欄與我們的WinForms功能區(qū)控件合并來(lái)創(chuàng)建統(tǒng)一塊。
這個(gè)表單選項(xiàng)將BarItems的兩個(gè)區(qū)域嵌入到其標(biāo)題欄中,當(dāng)您不需要具有大量工具欄或功能區(qū)操作的專用命令區(qū)域時(shí),工具欄表單是完美的。
Tabbed Form是為一種特定的 UI 隱喻而構(gòu)建的——在表單標(biāo)題欄區(qū)域帶有選項(xiàng)卡的類(lèi)似瀏覽器的窗口,您可以在設(shè)計(jì)時(shí)單擊“+”按鈕來(lái)添加選項(xiàng)卡,每個(gè)選項(xiàng)卡都包含自己的可以承載控件的內(nèi)容容器。
Fluent Design Form絕對(duì)是DevExpress WinForms控件中最精致的Form選項(xiàng)。受 Windows 10 啟發(fā),此表單在其標(biāo)題欄中提供操作(類(lèi)似于工具欄表單中的操作)、基于表單寬度的自適應(yīng)布局以及與其子 Accordion Control 的高級(jí)通信。此外,F(xiàn)orm 的側(cè)邊區(qū)域呈現(xiàn)了半透明的亞克力材質(zhì)。
最新的DirectX表單(在 v22.1 中可用)融合了技術(shù)團(tuán)隊(duì)在過(guò)去幾年開(kāi)始的所有突破性計(jì)劃:高 DPI 支持、DirectX 渲染以及 HTML 和 CSS 模板。
此表單為所有能夠使用 DirectX 渲染引擎的子控件啟用 DirectX 硬件加速,與標(biāo)準(zhǔn)技術(shù)(當(dāng)您翻轉(zhuǎn)全局 WindowsFormsSettings.ForceDirectXPaint 開(kāi)關(guān)時(shí))相比,DirectX 表單具有以下優(yōu)點(diǎn):
注意:許多DevExpress WinForms控件(例如,電子表格)不支持 DirectX 呈現(xiàn),如果您將它們放在 DirectX Form上,這些控件當(dāng)前不會(huì)顯示。
DirectX Forms 還接受 HTML 和 CSS 模板,它允許您設(shè)計(jì)受現(xiàn)代 Web UI 解決方案啟發(fā)的酷炫表單,下圖來(lái)自官方的演示中心,展示了此類(lèi)自定義UI的示例。
初始 DirectX Form 的外觀模仿標(biāo)準(zhǔn) XtraForm 樣式,此標(biāo)準(zhǔn)外觀存儲(chǔ)在默認(rèn)模板中:
<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>
這個(gè)默認(rèn)模板既不需要 CSS 樣式也不需要按鈕的 onClick 屬性——這些標(biāo)準(zhǔn)元素的外觀和操作是硬編碼的,元素的外觀取決于標(biāo)簽名稱,其行為通過(guò)元素 ID 設(shè)置。例如,以下行添加了一個(gè)看起來(lái)像Close按鈕,但行為類(lèi)似于最小化按鈕的按鈕。
<dx-form-closebutton id="minimizebutton"></dx-form-closebutton>
此功能允許您在不需要自定義設(shè)計(jì)時(shí)使用標(biāo)準(zhǔn)表單元素,或快速設(shè)置自定義元素的行為。 例如,您可以從 <div> 元素創(chuàng)建自定義按鈕,并將其 ID 設(shè)置為“closebutton”。
如果您的目標(biāo)是完全自定義表單布局,請(qǐng)從以下模板開(kāi)始。
<div id="frame" class="frame">
<div id="content">
</div>
</div>
.frame {
height: 100%;
}
這是您可以添加的最短的有效自定義模板 - 沒(méi)有 "frame" 和 "content"元素 ID 的模板被視為無(wú)效。
DevExpress WinForm
DevExpress WinForm擁有180+組件和UI庫(kù),能為Windows Forms平臺(tái)創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無(wú)論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
年一度的中秋節(jié)馬上就到啦,小伙伴們收到月餅了嗎。
記得我的學(xué)生時(shí)代,郵件祝福還風(fēng)靡過(guò)一段時(shí)間,打開(kāi)QQ郵箱,各種轉(zhuǎn)發(fā)郵件和祝福郵件,現(xiàn)在想想都覺(jué)得有點(diǎn)久遠(yuǎn)了。
相信小伙伴們也都用過(guò)群發(fā)郵件的功能,例如QQ郵箱,163郵箱等都有提供這種功能,直接發(fā)送或者密送都可以。但都會(huì)存在一個(gè)問(wèn)題,就是一鍵發(fā)送時(shí),郵件內(nèi)容都是一樣的,無(wú)法針對(duì)收件人而有個(gè)性化的稱呼。針對(duì)這個(gè)需求,我們可以做一個(gè)群發(fā)郵件的桌面端軟件。
我們首先整理下我們需要實(shí)現(xiàn)的最簡(jiǎn)單的功能:
需求整理完成,說(shuō)干就干。
首先新建一個(gè)窗體,定義為MainForm。將MainForm的初始狀態(tài)修改為一打開(kāi)就最大化。
this.WindowState = FormWindowState.Maximized;
我們可以用GroupBox將Mainform劃分為三部分,“登錄信息”,“收件人信息”,還有“郵件內(nèi)容”,如圖:
Tips:因?yàn)槲覀兡J(rèn)窗口最大化,所以我們需要先設(shè)置三個(gè)GroupBox的Anchor屬性,依次分別為“Top,Bottom,Left”,“Top,Bottom,Left”和“Top,Bottom,Left,Right”。這樣GroupBox就會(huì)隨窗口大小變化而不至于打亂布局。
劃分布局之后,在每一個(gè)GroupBox中增加我們需要的控件。
“登錄信息”:
兩個(gè)Label(標(biāo)注“賬號(hào)”與“密碼”);
兩個(gè)TextBox(用來(lái)輸入賬號(hào)與密碼);
兩個(gè)CheckBox(一個(gè)用來(lái)記住賬戶密碼,一個(gè)用來(lái)隱藏密碼)。
用TextBox輸入密碼時(shí),我們可以設(shè)置TextBox的UseSystemPasswordChar屬性為T(mén)rue,則我們輸入的文字都會(huì)以密文顯示。與CheckBox聯(lián)動(dòng),默認(rèn)勾選CheckBox時(shí),密碼以符號(hào)顯示,不勾選CheckBox時(shí),密碼以明文顯示。
代碼如下:
private void cbShowPwd_CheckedChanged(object sender, EventArgs e)
{
if (this.cbShowPwd.Checked == true)
{
this.tbPassword.UseSystemPasswordChar = false;
}
else
{
this.tbPassword.UseSystemPasswordChar = true;
}
}
實(shí)際效果如圖:
記住賬戶與密碼涉及本地存儲(chǔ),我們后面具體寫(xiě)代碼時(shí)再來(lái)實(shí)現(xiàn)這個(gè)功能,先按住不提。
“收件人信息”:
一個(gè)CheckBox(全選功能);
一個(gè)CheckListBox(用來(lái)顯示導(dǎo)入的收件人信息);
兩個(gè)Button(一個(gè)用來(lái)導(dǎo)入文件,一個(gè)用來(lái)確認(rèn)選擇收件人);
一個(gè)Label(用來(lái)顯示已選擇的收件人數(shù)量)。
關(guān)于CheckListBox的相關(guān)設(shè)置與全選功能具體可以查看我的上一篇文章(「Winform開(kāi)發(fā)小技巧05」批量操作單號(hào)-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);
}
}
}
這里的操作邏輯是:點(diǎn)擊Button導(dǎo)入收件人=>CheckListBox顯示收件人=>全選=>Label顯示已選人數(shù)=>點(diǎn)擊Button確認(rèn)選擇,收件人數(shù)據(jù)傳輸?shù)较乱粋€(gè)部分“郵件內(nèi)容”。
導(dǎo)入功能我們可以寫(xiě)一個(gè)方法,這里先暫時(shí)不寫(xiě)。
我們可以先解決Label的顯示問(wèn)題。Label顯示選擇人數(shù)時(shí),需要根據(jù)CheckListBox中Item的實(shí)時(shí)勾選狀態(tài)進(jìn)行變化,這個(gè)比較有趣,我們可以在CheckListBox的Itemcheck事件中實(shí)現(xiàn)。
代碼如下:
private void clbReceivers_ItemCheck(object sender, ItemCheckEventArgs e)
{
//這個(gè)事件是指示某項(xiàng)的選中狀態(tài)將要被更改、在更改前會(huì)執(zhí)行這個(gè)事件
//所以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();
}
}
實(shí)際效果如圖:(因?yàn)檫€沒(méi)有數(shù)據(jù),為了展示效果,我先手動(dòng)輸入一些數(shù)據(jù))
“郵件內(nèi)容”:
兩個(gè)Label;
兩個(gè)TextBox(一個(gè)用來(lái)顯示收件人,一個(gè)用來(lái)輸入標(biāo)題,顯示收件人我們可以將其MultiLine屬性設(shè)置為T(mén)rue,這樣可以多行顯示);
一個(gè)RichTextBox(用來(lái)輸入正文內(nèi)容,后期我們用Html來(lái)發(fā)送文件,RichTextBox方便我們輸入段落及圖片);
一個(gè)Button(用來(lái)確認(rèn)發(fā)送郵件)。
效果如圖:
至此,我們的布局就全部完成了!
但是大家又沒(méi)有發(fā)現(xiàn)一個(gè)問(wèn)題,由于Winfrom界面縮放問(wèn)題,我們生成的界面有點(diǎn)模糊,很難看,針對(duì)這個(gè)問(wèn)題,微軟有專門(mén)的解決方案。
首先右鍵項(xiàng)目=>添加新建項(xiàng)=>添加應(yīng)用程序清單文件。
打開(kāi)app.manifest文件,取消application節(jié)點(diǎn)注釋
打開(kāi)App.config文件,添加節(jié)點(diǎn)EnableWindowsFormsHighDpiAutoResizing,值為true
此時(shí)我們重新按F5進(jìn)行編譯,可以發(fā)現(xiàn)界面分辨率正常了,瞬間好看不少有沒(méi)有。
下篇文章,我們就開(kāi)始正式編碼了,或許可以趕上中秋給大家拜個(gè)晚年了,哈哈哈
如果各位覺(jué)得我寫(xiě)的對(duì)你有那么一點(diǎn)點(diǎn)幫助,歡迎一鍵三連~感激不盡~
印庫(kù)允許您將DevExpress .NET控件導(dǎo)出為各種文檔格式(PDF、HTML、MHT、TXT、CSV、XLS、RTF)和圖像格式(BMP、JPEG、GIF、TIFF、PNG、EMF),本文演示如何使用Print Preview窗口和代碼將控件導(dǎo)出為PDF格式。
DevExpress Universal Subscription官方最新版免費(fèi)下載試用,歷史版本下載,在線文檔和幫助文件下載-慧都網(wǎng)
提示:請(qǐng)注意,XtraPrinting 庫(kù)無(wú)法將某些控件導(dǎo)出為特定格式,但是所有控件都可以導(dǎo)出為 PDF 或圖像格式。
您可以使用Print Preview窗口將可打印控件導(dǎo)出為可用格式。
使用控件的 ShowPrintPreview 方法顯示此窗口,下圖說(shuō)明了網(wǎng)格控件的打印預(yù)覽窗口。
Print Preview表單頂部的工具欄顯示Export Document… 按鈕,單擊此按鈕可顯示一個(gè)下拉菜單,您可以從中選擇所需的導(dǎo)出文件格式。
要將頁(yè)面或報(bào)表標(biāo)題添加到報(bào)表中,請(qǐng)使用可打印鏈接(PrintableComponentLink)生成報(bào)表。
以下代碼演示了如何使用 XtraPrinting 庫(kù)方法在代碼中將控件導(dǎo)出到 PDF 文件,而無(wú)需打印預(yù)覽窗口。 控件 (XtraGrid) 通過(guò) PrintingSystemBase.ExportToPdf方法導(dǎo)出為 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庫(kù),能為Windows Forms平臺(tái)創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無(wú)論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。