Form1.cs
上传用户:yiyuerguo
上传日期:2014-09-27
资源大小:3781k
文件大小:12k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using System.IO ;
  8. namespace EditerApp
  9. {
  10. /// <summary>
  11. /// Form1 的摘要说明。
  12. /// </summary>
  13. public class Form1 : System.Windows.Forms.Form
  14. {
  15. private System.Windows.Forms.MainMenu mainMenu1;
  16. private System.Windows.Forms.MenuItem menuItem1;
  17. private System.Windows.Forms.MenuItem menuItem2;
  18. private System.Windows.Forms.MenuItem menuItem3;
  19. private System.Windows.Forms.MenuItem menuItem4;
  20. private System.Windows.Forms.MenuItem menuItem5;
  21. private System.Windows.Forms.MenuItem menuItem6;
  22. private System.Windows.Forms.MenuItem menuItem7;
  23. private System.Windows.Forms.OpenFileDialog openFileDialog1;
  24. private System.Windows.Forms.SaveFileDialog saveFileDialog1;
  25. public System.Windows.Forms.RichTextBox MyRTBox;
  26. private System.Windows.Forms.StatusBar MyStatus;
  27. private System.Windows.Forms.MenuItem menuItem8;
  28. private System.Windows.Forms.MenuItem 查找;
  29. private System.Windows.Forms.MenuItem menuItem9;
  30. /// <summary>
  31. /// 必需的设计器变量。
  32. /// </summary>
  33. private System.ComponentModel.Container components = null;
  34. private System.Drawing.Printing.PrintDocument MyPrintDC;
  35. private System.Windows.Forms.MenuItem menuItem10;
  36. private System.Windows.Forms.MenuItem menuItem11;
  37. private System.Windows.Forms.MenuItem menuItem12;
  38. private SearchForm aSForm;
  39. private StringReader MySReader; 
  40. public Form1()
  41. {
  42. //
  43. // Windows 窗体设计器支持所必需的
  44. //
  45. InitializeComponent();
  46. //
  47. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  48. //
  49. aSForm = new SearchForm ();
  50. aSForm.Owner = this; //设置SearchForm对象的Owner为Form1
  51. aSForm.Hide (); //隐藏SearchForm窗体
  52. }
  53. /// <summary>
  54. /// 清理所有正在使用的资源。
  55. /// </summary>
  56. protected override void Dispose( bool disposing )
  57. {
  58. if( disposing )
  59. {
  60. if (components != null) 
  61. {
  62. components.Dispose();
  63. }
  64. }
  65. base.Dispose( disposing );
  66. }
  67. #region Windows Form Designer generated code
  68. /// <summary>
  69. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  70. /// 此方法的内容。
  71. /// </summary>
  72. private void InitializeComponent()
  73. {
  74. this.MyRTBox = new System.Windows.Forms.RichTextBox();
  75. this.MyStatus = new System.Windows.Forms.StatusBar();
  76. this.mainMenu1 = new System.Windows.Forms.MainMenu();
  77. this.menuItem1 = new System.Windows.Forms.MenuItem();
  78. this.menuItem3 = new System.Windows.Forms.MenuItem();
  79. this.menuItem2 = new System.Windows.Forms.MenuItem();
  80. this.menuItem10 = new System.Windows.Forms.MenuItem();
  81. this.menuItem11 = new System.Windows.Forms.MenuItem();
  82. this.menuItem12 = new System.Windows.Forms.MenuItem();
  83. this.menuItem4 = new System.Windows.Forms.MenuItem();
  84. this.menuItem5 = new System.Windows.Forms.MenuItem();
  85. this.menuItem6 = new System.Windows.Forms.MenuItem();
  86. this.menuItem7 = new System.Windows.Forms.MenuItem();
  87. this.menuItem9 = new System.Windows.Forms.MenuItem();
  88. this.menuItem8 = new System.Windows.Forms.MenuItem();
  89. this.查找 = new System.Windows.Forms.MenuItem();
  90. this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
  91. this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
  92. this.MyPrintDC = new System.Drawing.Printing.PrintDocument();
  93. this.SuspendLayout();
  94. // 
  95. // MyRTBox
  96. // 
  97. this.MyRTBox.Dock = System.Windows.Forms.DockStyle.Fill;
  98. this.MyRTBox.Location = new System.Drawing.Point(0, 0);
  99. this.MyRTBox.Name = "MyRTBox";
  100. this.MyRTBox.Size = new System.Drawing.Size(292, 254);
  101. this.MyRTBox.TabIndex = 0;
  102. this.MyRTBox.Text = "";
  103. this.MyRTBox.TextChanged += new System.EventHandler(this.MyRTBox_TextChanged);
  104. // 
  105. // MyStatus
  106. // 
  107. this.MyStatus.Location = new System.Drawing.Point(0, 232);
  108. this.MyStatus.Name = "MyStatus";
  109. this.MyStatus.Size = new System.Drawing.Size(292, 22);
  110. this.MyStatus.TabIndex = 1;
  111. this.MyStatus.Text = "新建文件";
  112. // 
  113. // mainMenu1
  114. // 
  115. this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  116.   this.menuItem1,
  117.   this.menuItem7,
  118.   this.menuItem8,
  119.   this.查找});
  120. // 
  121. // menuItem1
  122. // 
  123. this.menuItem1.Index = 0;
  124. this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  125.   this.menuItem3,
  126.   this.menuItem2,
  127.   this.menuItem10,
  128.   this.menuItem11,
  129.   this.menuItem12,
  130.   this.menuItem4,
  131.   this.menuItem5,
  132.   this.menuItem6});
  133. this.menuItem1.Text = "文件(&F)";
  134. // 
  135. // menuItem3
  136. // 
  137. this.menuItem3.Index = 0;
  138. this.menuItem3.Text = "新建(&N)";
  139. this.menuItem3.Click += new System.EventHandler(this.menuItem3_Click);
  140. // 
  141. // menuItem2
  142. // 
  143. this.menuItem2.Index = 1;
  144. this.menuItem2.Text = "打开(&O)";
  145. this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
  146. // 
  147. // menuItem10
  148. // 
  149. this.menuItem10.Index = 2;
  150. this.menuItem10.Text = "打印";
  151. this.menuItem10.Click += new System.EventHandler(this.menuItem10_Click);
  152. // 
  153. // menuItem11
  154. // 
  155. this.menuItem11.Index = 3;
  156. this.menuItem11.Text = "打印预览";
  157. this.menuItem11.Click += new System.EventHandler(this.menuItem11_Click);
  158. // 
  159. // menuItem12
  160. // 
  161. this.menuItem12.Index = 4;
  162. this.menuItem12.Text = "页面设置";
  163. this.menuItem12.Click += new System.EventHandler(this.menuItem12_Click);
  164. // 
  165. // menuItem4
  166. // 
  167. this.menuItem4.Index = 5;
  168. this.menuItem4.Text = "保存(&S)";
  169. this.menuItem4.Click += new System.EventHandler(this.menuItem4_Click);
  170. // 
  171. // menuItem5
  172. // 
  173. this.menuItem5.Index = 6;
  174. this.menuItem5.Text = "-";
  175. // 
  176. // menuItem6
  177. // 
  178. this.menuItem6.Index = 7;
  179. this.menuItem6.Text = "退出(&X)";
  180. this.menuItem6.Click += new System.EventHandler(this.menuItem6_Click);
  181. // 
  182. // menuItem7
  183. // 
  184. this.menuItem7.Index = 1;
  185. this.menuItem7.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  186.   this.menuItem9});
  187. this.menuItem7.Text = "关于(&A)";
  188. // 
  189. // menuItem9
  190. // 
  191. this.menuItem9.Index = 0;
  192. this.menuItem9.Text = "查找";
  193. this.menuItem9.Click += new System.EventHandler(this.menuItem9_Click);
  194. // 
  195. // menuItem8
  196. // 
  197. this.menuItem8.Index = 2;
  198. this.menuItem8.Text = "";
  199. this.menuItem8.Click += new System.EventHandler(this.menuItem8_Click);
  200. // 
  201. // 查找
  202. // 
  203. this.查找.Index = 3;
  204. this.查找.Text = "";
  205. // 
  206. // openFileDialog1
  207. // 
  208. this.openFileDialog1.Filter = "Text Files(*.txt)|*.txt|Rich Text Format Files(*.rtf)|*.rtf|All Files(*.*)|*.*";
  209. // 
  210. // saveFileDialog1
  211. // 
  212. this.saveFileDialog1.FileName = "doc1";
  213. this.saveFileDialog1.Filter = "Text Files(*.txt)|*.txt|Rich Text Format Files(*.rtf)|*.rtf|All Files(*.*)|*.*";
  214. // 
  215. // MyPrintDC
  216. // 
  217. this.MyPrintDC.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.MyPrintDC_PrintPage);
  218. // 
  219. // Form1
  220. // 
  221. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  222. this.ClientSize = new System.Drawing.Size(292, 254);
  223. this.Controls.Add(this.MyStatus);
  224. this.Controls.Add(this.MyRTBox);
  225. this.Menu = this.mainMenu1;
  226. this.Name = "Form1";
  227. this.Text = "文本编辑器";
  228. this.Closed += new System.EventHandler(this.Form1_Closed);
  229. this.ResumeLayout(false);
  230. }
  231. #endregion
  232. /// <summary>
  233. /// 应用程序的主入口点。
  234. /// </summary>
  235. [STAThread]
  236. static void Main() 
  237. {
  238. Application.Run(new Form1());
  239. }
  240. //检查是否保存文件
  241. private void CheckSave()
  242. {
  243. if (MyRTBox.Text != "")
  244. {
  245. if (MessageBox.Show ("是否保存当前文件?","确认" ,MessageBoxButtons.OKCancel  ) == DialogResult.OK )
  246. {
  247. MySaveFile();
  248. }
  249. }
  250. }
  251.         //检查是否保存当前文件
  252. private void MyNewFile()
  253. {
  254. CheckSave(); 
  255. MyRTBox.Clear ();
  256. MyStatus.Text = "新建文件";
  257. }
  258. //保存当前文件
  259. private void MySaveFile()
  260. {
  261. MyStatus.Text = "保存文件";
  262. if (saveFileDialog1.ShowDialog () == DialogResult.OK )
  263. {
  264. MyRTBox.SaveFile (saveFileDialog1.FileName,RichTextBoxStreamType.PlainText );
  265. }
  266. }
  267. //检查是否保存当前文件
  268. private void MyOpenFile()
  269. {
  270. CheckSave(); 
  271. if (openFileDialog1.ShowDialog () == DialogResult.OK )
  272. {
  273. MyRTBox.LoadFile (openFileDialog1.FileName ,RichTextBoxStreamType.PlainText );
  274. MyStatus.Text = "打开文件";
  275. }
  276. }
  277. //检查是否保存当前文件
  278. private void MyExit()
  279. {
  280. CheckSave(); 
  281. Application.Exit ();
  282. }
  283.         //新建文件
  284. private void menuItem3_Click(object sender, System.EventArgs e)
  285. {
  286. MyNewFile(); 
  287. }
  288.         //打开文件
  289. private void menuItem2_Click(object sender, System.EventArgs e)
  290. {
  291. MyOpenFile();
  292. }
  293.         //保存文件
  294. private void menuItem4_Click(object sender, System.EventArgs e)
  295. {
  296. MySaveFile();
  297. }
  298.         //退出程序
  299. private void menuItem6_Click(object sender, System.EventArgs e)
  300. {
  301. MyExit();
  302. }
  303. private void MyRTBox_TextChanged(object sender, System.EventArgs e)
  304. {
  305. }
  306. private void menuItem8_Click(object sender, System.EventArgs e)
  307. {
  308. }
  309. private void menuItem9_Click(object sender, System.EventArgs e)
  310. {
  311. aSForm.Show (); //显示SearchForm窗体
  312. aSForm.Activate (); //激活SearchForm窗体,给予焦点
  313. }
  314. private void Form1_Closed(object sender, System.EventArgs e)
  315. {
  316. //CheckSave();
  317. }
  318. private void MyPrintDC_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
  319. {
  320. Graphics MyGraphics = e.Graphics ;
  321. Font MyPrintFont = MyRTBox.Font ;
  322. //每一页的行数
  323. float iLinePerPage = e.MarginBounds.Height  / MyPrintFont.GetHeight (MyGraphics);
  324. int iLineNumber = 0; //打印时的行计数器
  325. float fYPosition = 0;//打印时的纵坐标
  326. float fMarginLeft = e.MarginBounds .Left ;
  327. float fMarginTop = e.MarginBounds .Top;
  328. string strLine = ""; //每一行要打印的文本
  329. while ((iLineNumber < iLinePerPage) && 
  330. ((strLine = MySReader.ReadLine ())!=null))
  331. {
  332. fYPosition = fMarginTop + iLineNumber * MyPrintFont.GetHeight(MyGraphics);
  333. MyGraphics.DrawString (strLine, MyPrintFont, new SolidBrush (Color.Black ),fMarginLeft ,fYPosition,new StringFormat ());
  334. iLineNumber ++;
  335. }
  336. if (strLine!= null)
  337. {
  338. e.HasMorePages = true;//没有打印完,出发下一次PrintPage事件
  339. }
  340. else 
  341. {
  342. e.HasMorePages = false;
  343. }
  344. }
  345. private void menuItem10_Click(object sender, System.EventArgs e)
  346. {
  347. PrintDialog MyPrintDg = new PrintDialog (); //创建打印对话框
  348. MyPrintDg.Document = MyPrintDC ;
  349. MySReader = new StringReader (MyRTBox.Text );
  350. if (MyPrintDg.ShowDialog () == DialogResult.OK )
  351. {
  352. try 
  353. {
  354. MyPrintDC.Print ();
  355. }
  356. catch 
  357. {   //停止打印
  358. MyPrintDC.PrintController.OnEndPrint (MyPrintDC, new System.Drawing.Printing.PrintEventArgs() ); 
  359. }
  360. }
  361. }
  362. private void menuItem12_Click(object sender, System.EventArgs e)
  363. {
  364. PageSetupDialog MyPageSetupDg = new PageSetupDialog ();//页面设置对话框
  365. MyPageSetupDg.Document = MyPrintDC;
  366. try 
  367. {
  368. MyPageSetupDg.ShowDialog ();
  369. }
  370. catch {}
  371. }
  372. private void menuItem11_Click(object sender, System.EventArgs e)
  373. {
  374. PrintPreviewDialog MyPrintPreviewDg = new PrintPreviewDialog ();
  375. MyPrintPreviewDg.Document = MyPrintDC;
  376. try 
  377. {
  378. MyPrintPreviewDg.ShowDialog ();
  379. }
  380. catch 
  381. {
  382. MyPrintDC.PrintController .OnEndPrint (MyPrintDC, new System.Drawing .Printing .PrintEventArgs() );
  383. }
  384. }
  385. }
  386. }