**:微軟技術社群
下面的示例介紹了如何擴充套件richtextbox類,以及如何使用 em_formatrange 列印richtextbox控制項的內容。
1.在 visual c# .net 中,新建乙個名為 richtextboxprintctrl 的類庫專案。預設情況下建立 class1.cs。
2.將 class1.cs 的名稱改為 richtextboxprintctrl.cs。
3.在解決方案資源管理器中,右鍵單擊「引用」,然後單擊「新增引用」。
4.在「新增引用」對話方塊中,雙擊「system.drawing.dll」和「system.windows.forms.dll」,然後單擊「確定」。
5.將 richtextboxprintctl.cs 中的現有**替換為以下**:using system;
using system.windows.forms;
using system.drawing;
using system.runtime.interopservices;
using system.drawing.printing;
namespace richtextboxprintctrl
[structlayout(layoutkind.sequential)]private struct charrange
[structlayout(layoutkind.sequential)]private struct formatrange
private const int wm_user = 0x0400;private const int em_formatrange = wm_user + 57;
[dllimport("user32.dll")]
private static extern intptr sendmessage (intptr hwnd , int msg , intptr wp, intptr lp);
// render the contents of the richtextbox for printing// return the last character printed + 1 (printing start from this point for next page)
public int print( int charfrom, int charto,printpageeventargs e)
}}
6.在「生成」選單中,單擊「生成解決方案」以建立 richtextboxprintctrl.dll。
回到頂端
1.在 visual c# .net 中建立乙個新的 windows 應用程式專案。預設情況下將建立出 form1.cs。
2.將乙個按鈕控制項從工具箱拖入 form1。將name屬性更改為btnpagesetup,並將text屬性更改為頁面設定。
3.將另乙個按鈕控制項從工具箱拖入 form1。將name屬性更改為btnprintpreview,並將text屬性更改為列印預覽。
4.將另乙個按鈕控制項從工具箱拖入 form1。將name屬性更改為btnprint,並將text屬性更改為列印。
5.在工具箱中,雙擊「printdialog」、「printpreviewdialog」、「printdocument」和「pagesetupdialog」以將這些控制項新增到 form1 中。
6.將printdialog1、printpreviewdialog1和pagesetupdialog1控制項的document屬性修改為printdocument1。
7.在「工具」選單上,單擊「自定義工具箱」。
8.在「.net framework 元件」選項卡上,單擊「瀏覽」,單擊以選中「richtextboxprintctrl.dll」,然後單擊「確定」。
9.將richtextboxprintctrl從工具箱拖入 form1。
10.在解決方案資源管理器中,右鍵單擊form1.cs,然後單擊檢視**。
11.將以下**新增到initializecomponent方法中:this.printdocument1.beginprint += new system.drawing.printing.printeventhandler(this.printdocument1_beginprint);
this.printdocument1.printpage += new system.drawing.printing.printpageeventhandler(this.printdocument1_printpage);
this.btnprint.click += new system.eventhandler(this.btnprint_click);
this.btnprintpreview.click += new system.eventhandler(this.btnprintpreview_click);
this.btnpagesetup.click += new system.eventhandler(this.btnpagesetup_click);
12.將下面的**新增到 form1 類:private int checkprint;
private void btnpagesetup_click(object sender, system.eventargs e)
private void btnprintpreview_click(object sender, system.eventargs e)
private void btnprint_click(object sender, system.eventargs e)
private void printdocument1_beginprint(object sender, system.drawing.printing.printeventargs e)
private void printdocument1_printpage(object sender, system.drawing.printing.printpageeventargs e)
13.在「除錯」選單上,單擊「啟動」以執行該應用程式。form1 將顯示出來。
14.在 richtextboxprintctrl 中鍵入一些文字。
15.單擊「頁面設定」以設定頁面設定。
16.單擊「列印預覽」以檢視頁面的列印預覽。
17.單擊「列印」以列印「richtextboxprintctrl」的內容。
c 列印文件
using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...
C 列印文件換行
textbox設定為多行,輸入文字後,一段很長的文字在textbox裡是可以自動換行。但是列印時textbox裡面會自動換行的地方在紙張上卻不會自動換行。結果導致一段很長的文字無法列印完,紙張上僅能列印出部分文字,出界的文字全部丟失。private void printdocument1 print...
教程 滑鼠右鍵新建新增RTF文件
滑鼠右鍵新建新增rtf文件 今天想將空間日誌作個本地備份,但是苦於找不到適合的文字工具,因為一般的文字編輯工具都不支援貼圖。雖然word就可以滿足我們的需求,但檔案格式不用doc而是rtf 而我以前清理登錄檔時把所有的無用檔案都刪除了,所有現在需要重新加入rtf文件。我們既可以享用word提供的強大...