版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、XX 大學(xué) C#.NET課程考試設(shè)計(jì)題目多文本編輯器的設(shè)計(jì)起止日期2008 -2009學(xué)年第1學(xué)期課程名稱C#.NET語(yǔ)言程序設(shè)計(jì)設(shè)計(jì)成員 及各自的 工作說(shuō)明院系計(jì)算機(jī)系班級(jí)人員組成及各自工作說(shuō)明:學(xué)號(hào)姓名主要工作說(shuō)明成績(jī)整個(gè)程序的設(shè)計(jì)及完成設(shè)計(jì)內(nèi)容綜合運(yùn)用Visual C#.NET提供的標(biāo)準(zhǔn)控件,模仿 Window中的記事本和寫 字板的功能,自己設(shè)計(jì)一個(gè)多文檔編輯工具。評(píng) 語(yǔ) 與 成 績(jī)項(xiàng)目/成績(jī)優(yōu)良中及格不及格系統(tǒng)分析設(shè)計(jì)口程序設(shè)計(jì)水平口內(nèi)容完成情況口設(shè)計(jì)報(bào)告撰寫質(zhì)量口課程設(shè)計(jì)總結(jié)情況口附加說(shuō)明:綜合成績(jī): 指導(dǎo)教師年 月日一、題目:多文本編輯器的設(shè)計(jì)二、設(shè)計(jì)要求:用C#的可視化環(huán)境通過(guò)制
2、作一個(gè)RichTextBox這樣一個(gè)文本編輯器,熟悉在可視化環(huán)境下編程,并且學(xué)會(huì)使用里面提供的一些組裝好的一些工具,三、設(shè)計(jì)思路及代碼:第一是:新建一個(gè) RichTextBox,然后我最先想到的就是遨游里的選項(xiàng)卡非常好用而且人性化,怎么 制作這樣一個(gè)選項(xiàng)卡,怎么把 RichTextBox放到里面,我就了解了 TabControl工具并且最先想到的是用RichTextBox數(shù)組,每個(gè)選項(xiàng)卡分配一個(gè)RichTextBoxi,但是當(dāng)關(guān)閉選項(xiàng)卡時(shí)就遇到問(wèn)題了,不知道選項(xiàng)卡最后對(duì)應(yīng)的是哪一個(gè)RichTextBoxi,然后就想出了把RichTextBox封裝在選項(xiàng)卡里的想法,為了記錄文件路徑和文件是不是已
3、經(jīng)保存的狀態(tài),我順便封裝兩個(gè)Label進(jìn)去,因?yàn)橐玫剿麄兊膖ext()屬性記錄這些信息,我們只對(duì)當(dāng)前選項(xiàng)卡操作,首先用foreach語(yǔ)句獲取選項(xiàng)卡里的控件類型,再進(jìn)行相應(yīng)操作。這樣最后解決了窗口關(guān)閉問(wèn)題,以及新建窗口個(gè)數(shù)有限性的問(wèn)題,我的這個(gè)程序理論上是可以 新建無(wú)數(shù)多個(gè)窗口的,就看你內(nèi)存如何了。代碼如下:(文件打開的功能也差不多)private void 新建 ToolStripMenultem_Click(object sender, EventArgs e)stri ng str = "NewText" + (NF+); 獲取選項(xiàng)卡名字tabControl1.Tab
4、Pages.Add(str); 增加選項(xiàng)卡tabControl1.SelectTab(m+); 當(dāng)前頁(yè)轉(zhuǎn)到下一頁(yè)tabControl1.TabStop = true;/ 允許 tab鍵順序RichTextBox r= new RichTextBox();r.ContextMenuStrip = contextMenuStrip2; 增加右鍵菜單 r.TextChanged += new EventHandler(Form1_TextChanged);/ 文本內(nèi)容發(fā)生改變時(shí)執(zhí)行的函數(shù) r.Dock = System.Wi ndows.Forms.DockStyle.Fill;r.Locati o
5、n = new System.Draw in g.Po in t(0, 0);Label l1 = new Label();11. Text = str;/ 保存路徑Label l2 = new Label();12. Text ="新建"v+;/保存文件是不是保存的狀態(tài)11. Dock = System.Wi ndows.Forms.DockStyle.Bottom;12. Dock = System.Wi ndows.Forms.DockStyle.Bottom;tabCo ntrol1.SelectedTab.Co ntrols.Add(r);tabCo ntrol1
6、.SelectedTab.Co ntrols.Add(H);tabControl1.SelectedTab.Controls.Add(l2);圭寸裝進(jìn)去,注意句柄丟了,這樣做到與選項(xiàng)卡一一對(duì)應(yīng)。RichTextBox 添加一第二是:當(dāng) RichTextBox的文本改變時(shí),要改變文本是否保存的狀態(tài),這要給 個(gè) TextChanged 處理函數(shù) Form1_TextChanged(object sender, EventArgs e):14 / 13void Form1_TextCha nged(object sen der, Even tArgs e)獲得控件r、11、12 (第十設(shè)計(jì)思路)if
7、 (l2.Text ="已保存"| l2.Text ="打開") l2.Text ="未保存"v+; toolStripButto n3.E nabled = true;保存 SToolStripMenultem.Enabled = true; else if (l2.Text ="打開 1")l2.Text ="打開"toolStripButto n3.E nabled = false;保存 SToolStripMe nultem.E nabled = false;else toolStrip
8、Button3.Enabled = true; 保存 SToolStripMe nultem.E nabled = true;第三是:當(dāng)選項(xiàng)卡相互切換時(shí),也有一些事情要處理的,比如說(shuō)在一個(gè)選項(xiàng)卡里未保存文本,保存按 鈕需要保持可用狀態(tài),但是當(dāng)切換到另一個(gè)選項(xiàng)卡時(shí)可能它是已經(jīng)保存的,保存按鈕繼續(xù)保持不可用狀態(tài), 這需要一些判斷和處理,當(dāng)然還有其他一些操作:private void target(object sender. EventArgs e) 窗口切換/獲得選項(xiàng)卡里的控件,r為RichTextBox ,11為路徑欄,12為保存提示欄if (12 != null)if (2Text =&qu
9、ot;已保存"| 2Text ="打開")保存 SToolStripMenultem.Enabled = false; toolStripButto n3.E nabled = false;else保存 SToolStripMenultem.Enabled = true; toolStripButto n3.E nabled = true;if (fc > 0) 查找下一個(gè) NToolStripMenultem.Enabled = true;else 查找下一個(gè) NToolStripMenultem.Enabled = false;if (r.Ca nUn
10、do) 撤消 ToolStripMe nultem.E nabled = true;else 撤消 ToolStripMe nultem.E nabled = false;if(l1!=null && 12!=null)if (隱藏路徑 ToolStripMenultem.Checked = true) l1.Hide();else l1.Show();if (隱藏保存提示欄 ToolStripMenultem.Checked = true) l2.Hide(); else l2.Show();第四是:當(dāng)選項(xiàng)卡關(guān)閉時(shí)也有一些處理,比如說(shuō)文本沒(méi)有保存的話要給用戶一個(gè)保存修改的機(jī)會(huì)
11、,要 實(shí)現(xiàn)像遨游那樣雙擊可以關(guān)閉,我設(shè)置了雙擊函數(shù),并且選項(xiàng)卡的右鍵菜單的關(guān)閉選項(xiàng)的處理也直接使用 這個(gè)雙擊函數(shù),主要實(shí)現(xiàn)關(guān)閉選項(xiàng)卡的功能,但是為了使用戶操作,我至少要有一個(gè)選項(xiàng)卡留在窗口不能 關(guān)閉,所以最后一個(gè)選項(xiàng)卡不能關(guān)閉的:void tabC on trol1_DoubleClick(object sen der, Even tArgs e)獲得選項(xiàng)卡里的控件,r為RichTextBox , l1為路徑欄,l2為保存提示欄if (m > 1)/當(dāng)窗口數(shù)量 m > 1時(shí)才執(zhí)行關(guān)閉功能if (l2.Text ="已保存"| l2.Text ="打開&
12、quot;) tabCo ntrol1.SelectedTab.Dispose();m-;else string message, title; DialogResult result;/文本需要保存時(shí)要給出提示信息對(duì)話框 message ="窗口正在關(guān)閉 nn但是文本未被保存! nn是不是執(zhí)行保存?"title ="提醒你"butt on = MessageBoxButt on s.YesNoCa ncel;icon = MessageBoxlc on.Warning;result = MessageBox.Show(message, title, b
13、utt on, icon);if (result.ToStri ng() = "Yes")保存 SToolStripMenultem_Click(sender, e); tabControl1.SelectedTab.Dispose(); m-; else if (result.ToStri ng() = "No") tabCo ntrol1.SelectedTab.Dispose(); m-; else /end else/end if (m > 1)第五是:字體的設(shè)置,考慮要先獲得所選文本的字體,要體現(xiàn)人性化智能化:(顏色的設(shè)置也差不多)pri
14、vate void 字體 ToolStripMenultem_Click(object sender, EventArgs e)/獲得選項(xiàng)卡里的控件,r為RichTextBox ,11為路徑欄,12為保存提示欄f = new Fon tDialog(); f.ShowColor = true; f.ShowApply = true; /下面添加一個(gè)處理函數(shù)f.Apply += new Even tHa ndler(f_Apply); f.Scripts Only = true; f.ShowEffects = true;f.ShowHelp = true; f.AllowVerticalF o
15、nts = true; f.Color = r.Selecti on Color; f.Font = r.Select ionFont; f.ShowDialog(); r.Select ionFont = f.Font;r.Select ion Color = f.Color;void f_Apply(object sen der, Even tArgs e)/當(dāng)字體對(duì)話框的應(yīng)用按鈕被按下時(shí)發(fā)生/獲得選項(xiàng)卡里的控件,r為RichTextBox ,11為路徑欄,l2為保存提示欄r.Select ionFont = f.Font;r.Select ion Color = f.Color;r.Fo
16、cus();第六是:查找對(duì)話框的制作,說(shuō)了這個(gè)其實(shí)替換對(duì)話框就不要說(shuō)了:private void findFun 1(object sen der, Even tArgs e) /執(zhí)行向下查找的功能,fs=0表示沒(méi)有選擇文本,否則選擇了文本/獲得選項(xiàng)卡里的控件,r為RichTextBox ,11為路徑欄,l2為保存提示欄if (r.SelectedText .Len gth = 0) fs = 0; stri ng str1 = fin d.textBox1.Text; if (str1 .Length = 0) return;if (fs = 0) start = r.Selectio nS
17、tart-1; fs = 1; else start = r.Selecti on Start; if (start = r.Text.Le ngth - 1) start-; start = r.Fin d(str1, start + 1, RichTextBoxF in ds.MatchCase);f (start = -1)MessageBox.Show(”已查找到文檔的結(jié)尾!","查找結(jié)束對(duì)話框");else fs = 1; r.Focus();private void findFun2(object sender, EventArgs e) /執(zhí)行向上查
18、找的功能,fs=0表示沒(méi)有選擇文本/獲得選項(xiàng)卡里的控件,r為RichTextBox , l1為路徑欄,l2為保存提示欄int q, n,l; if (r.SelectedText.Le ngth = 0) fs = 0; stri ng str1 = fin d.textBox1.Text;if (str1.Le ngth = 0) retur n; start = r.Select ion Start; q = 0; l = 0; n = -1;while (n < start) if (fs > 0 && n >= 0) q = n; else q = s
19、tart; l-; n = r.Fi nd(str1, n + 1, RichTextBoxFi nds.MatchCase);if (n >= start&&fs=0) r.Selectio nLe ngth=0; l-; if (r.TextLe ngth = 0) l-; break; fs = 1; l+;if (start = 0) l = 0; if (n = -1) break;if (l < 1) MessageBox.Show(” 已查找到文檔的開頭!","查找結(jié)束對(duì)話框");r.SelectionStart = st
20、art; else.Select ion Start = q;r.Focus();/函數(shù)結(jié)束private void fin dClose(object sen der, Even tArgs e)/執(zhí)行關(guān)閉查找對(duì)話框的功能,有些數(shù)據(jù)需要重置fc = 0; 查找下一個(gè) NToolStripMenultem.Enabled = false; find.Close();private void 查找 FToolStripMenultem_Click(object sender, EventArgs e)if (fc = 1) fin d.Close(); fin d=new Form2(); fc
21、 = 1; /查找對(duì)話框的數(shù)目為1/如果已經(jīng)存在查找對(duì)話框則關(guān)閉前一個(gè),永遠(yuǎn)保持只有一個(gè)對(duì)話框給用戶操作查找下一個(gè) NToolStripMenultem.Enabled = true; find.button3.Click += new EventHandler(findFun1); fin d.butto n2.Click += new Even tHa ndler(fi ndFu n2);添加查找對(duì)話框按鈕的處理函數(shù),在上面fin d.butto n1.Click += new Even tHa ndler(fi ndClose); fin d.Show();第七是:獲得系統(tǒng)時(shí)間 ->
22、; r.SelectedText = DateTime.Now.ToStri ng();第八是:保存文件,另存為,這里列舉保存的代碼:private void 保存 SToolStripMenultem_Click(object sender, EventArgs e)獲得選項(xiàng)卡里的控件,r為RichTextBox , 11為路徑欄,l2為保存提示欄if (l2 != null)if (l2.Text ="新建")/比較特殊,因?yàn)闆](méi)有保存路徑所以需要與用戶進(jìn)行對(duì)話 SaveFileDialog save = new SaveFileDialog(); save.Defaul
23、tExt = "*.rtf" save.Filter = "*.rtf | *.rtf"if (save.ShowDialog() = DialogResult.OK && save.FileName.Le ngth > 0)r.SaveFile(save.FileName); l2.Text ="已保存"v-; l1.Text = save.FileName; tabCo ntrol1.SelectedTab.Text = Syste m.I O.Path.GetFileName(save.FileName);
24、else if (l2.Text ="未保存") r.SaveFile(l1.Text); l2.Text ="已保存"v-;if (l2.Text ="打開") 2.Text ="已保存"toolStripButton3.Enabled = false; 保存 SToolStripMenultem.Enabled = false;/ 保存按鈕不可用第九是:退出程序時(shí)的處理:(沒(méi)有保存的文件需要和用戶進(jìn)行對(duì)話,確定保存與否)private void 退出 ToolStripMenultem_Click(object
25、 sender, EventArgs e)if (v > 0) /其中v是未保存文本的記數(shù)數(shù)量,有未保存的文本需要和用戶取得對(duì)話 string message, title; DialogResult result; title ="提醒你"icon = MessageBoxlcon.Warning; message ="窗口正在關(guān)閉 nn但是文本未被全部保存! nn是不是全部執(zhí)行保存 ?";butt on = MessageBoxButt on s.YesNoCa ncel; result = MessageBox.Show(message, t
26、itle, butt on, icon); if (result.ToStri ng() = "Yes") for (int count = 0; count < m;co un t+ ) RichTextBox r = null; Label l1 = null, l2 = n ull; tabCo ntrol1.Selectedl ndex = count;獲得選項(xiàng)卡里的控件,r為RichTextBox ,11為路徑欄,l2為保存提示欄if (l2 != null && (l2.Text =" 未保存"| l2.Text =&q
27、uot;新建")保存 SToolStripMe nultem_Click(se nder, e);/end for this.Close();/end result.ToStri ng() = "Yes"else if (result.ToStri ng() = "No") this.Close(); / endresult.ToStri ng() = "No"else /取消動(dòng)作/end if (v > 0)else this.Close(); /如果沒(méi)有未保存的文本則直接關(guān)閉不需要提醒用戶第十是:獲得選項(xiàng)卡里的控件
28、,r為RichTextBox ,11為路徑欄,12為保存提示欄,這樣就差不多解決了整個(gè)程序了,因?yàn)槌绦虻幕究蚣芤呀?jīng)呈現(xiàn)了:RichTextBox r = n ull;Label l1 = n ull, 12 = n ull;foreach (Con trol c in tabC on trol1.SelectedTab.C on trols)if (c is RichTextBox)r = (RichTextBox)c;if (c is Label)if (l1 = null) l1 = (Label)c;else if (l2 = n ull) l2 = (Label)c;第是:獲得絕對(duì)路
29、徑下的文件名,save.FileName是絕對(duì)路徑tabCo ntrol1.SelectedTab.Text = System.I O. Path.GetFileName(save.FileName); 第十二是:當(dāng)按鈕可用時(shí)要設(shè)置為true屬性:(否則設(shè)為 flase)復(fù)制 CToolStripMenultem.Enabled = true; 查找 FToolStripMenultem.Enabled = true; 轉(zhuǎn)至U ToolStripMenultem.Enabled = true; 時(shí)間與日期 ToolStripMenultem.Enabled = true; 段落 ToolStr
30、ipMe nultem.E nabled = true;顏色 AToolStripMe nultem.E nabled = true;另存為 AToolStripMenultem.Enabled = true; 剪切 TToolStripMenultem.Enabled = true; 刪除 ToolStripMe nultem.E nabled = true; 替換 ToolStripMe nultem.E nabled = true; 全選 ToolStripMe nultem.E nabled = true; 字體 ToolStripMe nultem.E nabled = true;
31、主題 HToolStripMenultem.Enabled = true;toolStripButt on4.En abled = true; toolStripButt on 5.E nabled = true; toolStripButt on 7.E nabled = true; toolStripButt on 8.E nabled = true; toolStripButto n9.E nabled = true; toolStripButt on 10.E nabled = true; 第十三是:變量的說(shuō)明:(定義了幾個(gè)全局變量下面分別說(shuō)明)m是選項(xiàng)卡個(gè)數(shù),動(dòng)態(tài)變化int NF =
32、 1,m=0,v=0; NF是記數(shù)新建文件的次數(shù),只加不減, / v是需要進(jìn)行保存的選項(xiàng)卡個(gè)數(shù),也是動(dòng)態(tài)變化的一個(gè)值 private MessageBoxButt ons butt on;/退出時(shí)提示對(duì)話框的按鈕風(fēng)格 private MessageBoxlcon icon; /退出時(shí)提示對(duì)話框的圖標(biāo)風(fēng)格FontDialog f; /字體對(duì)話框,因?yàn)閮蓚€(gè)函數(shù)共用它所以設(shè)為全局變量Form2 find; int start=0 , fc = 0,fs=0;/查找對(duì)話框,start是被選擇的文本在RichTextBox中的位置,/ fc是在工作中查找對(duì)話框的個(gè)數(shù),fs=O表示沒(méi)有選擇文本,否則選擇了
33、文本Form3 tiH = null;/替換對(duì)話框四、實(shí)驗(yàn)效果圖:1、選項(xiàng)卡可以雙擊關(guān)閉,也可以在右鍵菜單里選擇關(guān)閉選項(xiàng)來(lái)關(guān)閉,如圖:2、字體設(shè)置,彈岀的對(duì)話框自動(dòng)獲得字體的屬性,并顯示,而且實(shí)現(xiàn)應(yīng)用功能:U丨回丨埜1I-Of不四 小五.S 號(hào)U口3、顏色對(duì)話框的設(shè)置和字體對(duì)話框差不多,都是能自動(dòng)獲得所選擇字體的顏色并在對(duì)話框里體現(xiàn):文件(日編輯(目格式 幫助凹=sns.園i iifeoi ££i yri Sss-iniua 佶除levTextl kans.oHe. rtfL r 廠 刃廠廠 馳廠廠 辱自定文額色(£):規(guī)定自定交額色辺)»顫色I(xiàn)死色Q)
34、亮度©: 6口藍(lán):口確定取消 幫助理添加劉自定義額色®4、主題是改變背景色,在格式里選擇主題,定義背景色:文件(日 錦輯 格式 幫肋(出d矗建占血Hi亀曲冰鑒切H電T ex tlkansoae. rtfheiio world !基本驗(yàn)色(1:確定取梢str &t or車面 Vkans obckukE oae. t t£書仔體©眈inuig脅証 :口 !_ L廠 !_ = 自定義碩色©:規(guī)定自走義顏色0»C : DocnAeut E andl Set tingsAda ini5、查找對(duì)話框?qū)崿F(xiàn)了界面置頂,當(dāng)查找到文本頭或尾時(shí)將提示并不循環(huán)查找元素:6、替換對(duì)話框也設(shè)置了置頂功能,不過(guò)在岀現(xiàn)提示“替換完畢!”時(shí)會(huì)暫時(shí)失去置頂效果,這是界面的要求:a 回文件(已編輯(目格式©幫助(也矗建 行扛旺 H保蠱亀復(fù)n就翅 rK 1創(chuàng)壬住 ®as芭iiiyg 礎(chǔ)MewT exheiio world &&&&* ±舊文本:新文本二替換取消C" iD>oh. tk.n<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年貨車運(yùn)輸服務(wù)承包合同模板
- 2024配件的采購(gòu)合同范本
- 2024年社區(qū)食堂承包經(jīng)營(yíng)管理合同樣本3篇
- 2024年度水土保持與生態(tài)農(nóng)業(yè)項(xiàng)目合作合同3篇
- 2025年度新型建筑材料產(chǎn)品手冊(cè)制作與推廣服務(wù)合同3篇
- 2024選礦廠尾礦處理與綜合利用合作協(xié)議3篇
- 2024男方離婚協(xié)議書中企業(yè)股權(quán)分割協(xié)議范本3篇
- 2025年度綠色能源設(shè)備采購(gòu)與維護(hù)服務(wù)合同范本3篇
- 2024年設(shè)備維護(hù)協(xié)議3篇
- 2024年高效大棚租賃與農(nóng)業(yè)電商平臺(tái)合作協(xié)議3篇
- 義務(wù)教育(音樂(lè))課程標(biāo)準(zhǔn)(2022年版)解讀
- 智慧農(nóng)業(yè)行業(yè)營(yíng)銷策略方案
- 市場(chǎng)部整體運(yùn)營(yíng)概況
- 室性心動(dòng)過(guò)速
- 信息安全技術(shù)測(cè)試題與答案
- 安保工作考核表
- 數(shù)字廣告數(shù)據(jù)要素流通保障技術(shù)研究報(bào)告(2023年)
- 2024年-2025年公路養(yǎng)護(hù)工理論知識(shí)考試題及答案
- JJF(蘇) 283-2024 暫態(tài)地電壓法局部放電檢測(cè)儀校準(zhǔn)規(guī)范
- “新生代”社區(qū)工作者的基層治理工具箱
- 人教版六年級(jí)數(shù)學(xué)上冊(cè)練習(xí)題及參考答案
評(píng)論
0/150
提交評(píng)論