實現(xiàn)打印功能的核心是PrintDocument類這個類屬于System.Drawing.Printing名字空間這個類封裝了當(dāng)前的打印設(shè)置頁面設(shè)置以及所
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的平桂網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
有的與打印有關(guān)的事件和方法
這個類包括以下幾個屬性 事件 和方法
1、PrinterSettings 屬性
存放打印機的設(shè)置信息這個屬性不需要程序員設(shè)置因為它是由打印對話框獲取的
2、PrintCountroller 屬性
控制打印過程
3、DefaultPageSettings 屬性
存放頁面設(shè)置信息 打印紙大小方向等也不需要程序員設(shè)置因為它是由頁面設(shè)置對話框獲取的
4、DocumentName 屬性
指定文檔名稱,出現(xiàn)在打印機狀態(tài)窗口中
1。 BeginPrint事件
在打印之前發(fā)出
2. PrintPage事件
每打印一頁是發(fā)出,事件接受一個PrintPageEventArgs參數(shù)該參數(shù)封裝了打印相關(guān)的信息
PrintPageEventArgs參數(shù)有很多重要的屬性
1 Cancel 取消打印
2 Graphics 頁面的繪圖對象
3 HasMorePages 是否還有要打印的頁面
Print 方法 該方法沒有參數(shù) 調(diào)用它將按照當(dāng)前設(shè)置開始打印
若實現(xiàn)打印功能首先構(gòu)造PrintDocument對象添加打印事件
PrintDocument printDocument;
private void InitializeComponent()
{
...
printDocument=new PrintDocument();
printDocument.PrintPage += new PrintPageEventHandler (this.printDocument_PrintPage);
...
}
實現(xiàn)打印事件功能
打印和繪圖類似都是調(diào)用Graphics 類的方法進行畫圖 不同的是一個在顯示器上一個在打印紙上并且打印要進行一些復(fù)雜的計算
如換行 分頁等。
private void printDocument_PrintPage(object sender,PrintPageEventArgs e)
{
StringReader lineReader = new StringReader(textBox.Text);
Graphics g = e.Graphics; //獲得繪圖對象
float linesPerPage = 0; //頁面的行號
float yPosition = 0; //繪制字符串的縱向位置
int count = 0; //行計數(shù)器
float leftMargin = e.MarginBounds.Left; //左邊距
float topMargin = e.MarginBounds.Top; //上邊距
string line = null; 行字符串
Font printFont = this.textBox.Font; //當(dāng)前的打印字體
SolidBrush myBrush = new SolidBrush(Color.Black);//刷子
linesPerPage = e.MarginBounds.Height / printFont.GetHeight(g);//每頁可打印的行數(shù)
//逐行的循環(huán)打印一頁
while(count linesPerPage ((line=lineReader.ReadLine()) != null))
{
yPosition = topMargin + (count * printFont.GetHeight(g));
g.DrawString(line, printFont, myBrush, leftMargin, yPosition, new StringFormat());
count++;
}
如果本頁打印完成而line不為空說明還有沒完成的頁面這將觸發(fā)下一次的打印事件在下一次的打印中l(wèi)ineReader會
自動讀取上次沒有打印完的內(nèi)容因為lineReader是這個打印方法外的類的成員它可以記錄當(dāng)前讀取的位置
if(line != null)
e.HasMorePages = true;
else
e.HasMorePages = false;
}
打印設(shè)置,構(gòu)造打印對話框 將對話框中設(shè)置的Document屬性賦給printDocument這樣會將用戶的設(shè)置自動保存到printDocument
的PrinterSettings屬性中
protected void FileMenuItem_PrintSet_Click(object sender,EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument;
printDialog.ShowDialog();
}
頁面設(shè)置和打印預(yù)覽與打印設(shè)置原理相同都是構(gòu)造對話框?qū)⒂脩粼趯υ捒蛑械脑O(shè)置保存到相應(yīng)的類的屬性中
protected void FileMenuItem_PageSet_Click(object sender,EventArgs e)
{
PageSetupDialog pageSetupDialog = new PageSetupDialog();
pageSetupDialog.Document = printDocument;
pageSetupDialog.ShowDialog();
}
打印預(yù)覽
protected void FileMenuItem_PrintView_Click(object sender,EventArgs e)
{
PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
printPreviewDialog.Document = printDocument;
try
{
printPreviewDialog.ShowDialog();
}
catch(Exception excep)
{
MessageBox.Show(excep.Message, "打印出錯", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
打印就可以直接調(diào)用printDocument的Print()方法因為用戶可能在打印之前還要再更改打印設(shè)置所以
在這里再次顯示打印設(shè)置對話框
protected void FileMenuItem_Print_Click(object sender,EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument;
lineReader = new StringReader(textBox.Text);
if (printDialog.ShowDialog() == DialogResult.OK)
{
try
{
printDocument.Print();
}
catch(Exception excep)
{
MessageBox.Show(excep.Message, "打印出錯", MessageBoxButtons.OK, MessageBoxIcon.Error);
printDocument.PrintController.OnEndPrint(printDocument,new PrintEventArgs());
}
}
}
總結(jié)打印的過程是
1 在應(yīng)用程序窗體初始化時構(gòu)造PrintDocument對象 添加 printDocument 的 PrintPage 方法
2 實現(xiàn)PrintPage方法 4 在用戶的單擊事件中調(diào)用 printDocument 的 Print方法實現(xiàn)打印功能
在這中間可能要用到 PrintDialog PrintPreviewDialog PageSetupDialog 設(shè)置和查看打印效
一般情況下先用EXCEL做好一個樣表文件,設(shè)定好打印區(qū)域和樣式,需要填內(nèi)容的時候,先程序復(fù)制一個樣表文件,然后調(diào)用API打開表格填寫內(nèi)容并打印,如果想用API來實現(xiàn)調(diào)整模板和打印預(yù)覽,可能比較困難,而且很抽象,個人覺得費時費力效果還不一定理想
我最近剛剛實現(xiàn)了這個。是基于Excel的。
'********************************
' 該模塊用來實現(xiàn)各種打印功能
'********************************
'打印到excel中
Public Function print2Excel() As Boolean
' On Error GoTo Print2Excel_Error
Dim xlApp As Excel.Application
Dim i, j ,colums As Integer
Dim startRow, startCol As Integer
Dim tmp() As Variant
startRow = 1
startCol = 1
colums =10
Set xlApp = New Excel.Application '注意之前,要在工程-》引用中將支持excel的控件加載進來
Set xlApp = CreateObject("Excel.Application") '激活EXCEL應(yīng)用程序
xlApp.Visible = False '隱藏或顯示EXCEL應(yīng)用程序窗口
xlApp.SheetsInNewWorkbook = 1 '打開工作簿,strDestination為一個EXCEL報表文件
Set xlBook = xlApp.Workbooks.Add '打開工作簿,strDestination為一個EXCEL報表文件
Set xlSheet = xlBook.Worksheets(1)
xlSheet.PageSetup.Orientation = g_Print_Method
'設(shè)置打印數(shù)據(jù) g_Print_Data是一個Variant的二維數(shù)組,這個你要根據(jù)自己的情況作修改
For i = LBound(g_Print_Data) To UBound(g_Print_Data)
For j = LBound(g_Print_Title) To colums - 1
' xlSheet.Cells(startRow, i + startCol).Width = Len(CStr(" " g_Print_Data(i,j) " "))
、 Next
Next
'頁面設(shè)置 g_Preview為全局變量,是否要求預(yù)覽
If g_Preview = True Then
xlApp.Caption = "打印預(yù)覽" '設(shè)置預(yù)覽窗口的標(biāo)題
xlApp.Visible = True '隱藏或顯示EXCEL應(yīng)用程序窗口
xlApp.ActiveSheet.PrintPreview
Else
xlSheet.PrintOut '執(zhí)行打印
End If
xlApp.DisplayAlerts = False
xlApp.Quit '退出EXCEL
xlApp.DisplayAlerts = True
' xlBook.Save '保存文件
print2Excel = True
Exit Function
Print2Excel_Error:
print2Excel = False
End Function
病情分析:
您好,你經(jīng)常頭暈估計是與血壓偏低是有關(guān)系的。
指導(dǎo)意見:
你可以吃點蜂王漿或生脈飲調(diào)理,平時要積極參加體育鍛煉,改善體質(zhì),增加營養(yǎng),多喝水,多吃湯。
病情分析:
你好,你的情況屬于低血壓引起的癥狀,一般會引起經(jīng)常頭暈乏力和眼花等癥狀,你的情況需要積極治療的的
指導(dǎo)意見:
你的情況我建議首先就要注意休息,清淡溫?zé)嵋紫嬍澈荜P(guān)鍵的,建議你用人參燉雞湯服用看看,多吃紅棗和枸杞等食物,積極參加體育鍛煉,祝你健康
病情分析:
你好!根據(jù)你的資料初步考慮,你的頭暈和你的血壓偏低相關(guān)。血壓偏低時改變體位會導(dǎo)致的一過性腦供血不足,其臨床特點是頭暈,睡眠障礙,記憶力減退三大癥狀,還有頂枕部頭痛,輕癱,言語障礙、情緒易激動等表現(xiàn),一般病情緩慢發(fā)展,此類頭暈的特點是在體位轉(zhuǎn)變時容易出現(xiàn)或加重,如由平臥突然坐起,或者是下蹲后突然站立等動作。頭暈可分為兩類:一為旋轉(zhuǎn)性眩暈,多由前庭神經(jīng)系統(tǒng)及小腦的功能障礙所致,以傾倒的感覺為主,感到自身晃動或景物旋轉(zhuǎn)。二為一般性暈,多由某些全身性疾病引起,以頭昏的感覺為主,感到頭重腳輕。如貧血、體質(zhì)衰竭等。
指導(dǎo)意見:
建議做全身體檢,測血壓,血糖,血常規(guī),做頭顱、頸椎CT等,尋找原因,對癥治療。避免勞累,減輕心理負擔(dān),積極配合治療,增強免疫力。祝你健康!
頭暈可能是感冒,頸椎病,貧血,美尼爾氏綜合征,心律失常,休息的時間和質(zhì)量不好,都是可能導(dǎo)致的,需要找到原因,針對性的治療才行。
頭暈可能是感冒,頸椎病,貧血,美尼爾氏綜合征,心律失常,休息的時間和質(zhì)量不好,都是可能導(dǎo)致的,需要找到原因,針對性的治療
你好,血壓只是低些而沒有不適癥狀一般不需要處理,如果感到不適或伴有其他癥狀就醫(yī)治療了,建議服用生脈飲口服液或者腦心舒口服液治療.希望回答可以對您有幫助
可能是感冒,貧血,美尼爾氏綜合征,心律失常,休息的時間和質(zhì)量不好,都是可能導(dǎo)致的,需要找到原因,針對性的治療。
頭暈原因很多,一般有頸椎病,貧血,美尼爾氏綜合征,心律失常,,腔隙性腦梗塞等,建議你去醫(yī)院檢查,確診病因才能有效治療。
您好,頭暈還要結(jié)合一下血脂等情況,根據(jù)具體原因采取治療措施,
NET中數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入Excel并打印摘要:眾所周知,WEB上的打印是比較困難的,常見的WEB上打印的方法大概 ... type=button value=打印預(yù)覽onclick=document.all.WebBrowser.ExecWB(7,1) ... 3、將數(shù)據(jù)庫的數(shù)據(jù)或要打印的內(nèi)容導(dǎo)出到Excel,Word中去打印