




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、XX 大學(xué) C#.NET課程考試設(shè)計題目多文本編輯器的設(shè)計起止日期2008 -2009學(xué)年第1學(xué)期課程名稱C#.NET語言程序設(shè)計設(shè)計成員 及各自的 工作說明院系計算機系班級人員組成及各自工作說明:學(xué)號姓名主要工作說明成績整個程序的設(shè)計及完成設(shè)計內(nèi)容綜合運用Visual C#.NET提供的標(biāo)準(zhǔn)控件,模仿 Window中的記事本和寫 字板的功能,自己設(shè)計一個多文檔編輯工具。評 語 與 成 績項目/成績優(yōu)良中及格不及格系統(tǒng)分析設(shè)計口程序設(shè)計水平口內(nèi)容完成情況口設(shè)計報告撰寫質(zhì)量口課程設(shè)計總結(jié)情況口附加說明:綜合成績: 指導(dǎo)教師年 月日一、題目:多文本編輯器的設(shè)計二、設(shè)計要求:用C#的可視化環(huán)境通過制
2、作一個RichTextBox這樣一個文本編輯器,熟悉在可視化環(huán)境下編程,并且學(xué)會使用里面提供的一些組裝好的一些工具,三、設(shè)計思路及代碼:第一是:新建一個 RichTextBox,然后我最先想到的就是遨游里的選項卡非常好用而且人性化,怎么 制作這樣一個選項卡,怎么把 RichTextBox放到里面,我就了解了 TabControl工具并且最先想到的是用RichTextBox數(shù)組,每個選項卡分配一個RichTextBoxi,但是當(dāng)關(guān)閉選項卡時就遇到問題了,不知道選項卡最后對應(yīng)的是哪一個RichTextBoxi,然后就想出了把RichTextBox封裝在選項卡里的想法,為了記錄文件路徑和文件是不是已
3、經(jīng)保存的狀態(tài),我順便封裝兩個Label進(jìn)去,因為要用到他們的text()屬性記錄這些信息,我們只對當(dāng)前選項卡操作,首先用foreach語句獲取選項卡里的控件類型,再進(jìn)行相應(yīng)操作。這樣最后解決了窗口關(guān)閉問題,以及新建窗口個數(shù)有限性的問題,我的這個程序理論上是可以 新建無數(shù)多個窗口的,就看你內(nèi)存如何了。代碼如下:(文件打開的功能也差不多)private void 新建 ToolStripMenultem_Click(object sender, EventArgs e)stri ng str = "NewText" + (NF+); 獲取選項卡名字tabControl1.Tab
4、Pages.Add(str); 增加選項卡tabControl1.SelectTab(m+); 當(dāng)前頁轉(zhuǎn)到下一頁tabControl1.TabStop = true;/ 允許 tab鍵順序RichTextBox r= new RichTextBox();r.ContextMenuStrip = contextMenuStrip2; 增加右鍵菜單 r.TextChanged += new EventHandler(Form1_TextChanged);/ 文本內(nèi)容發(fā)生改變時執(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)去,注意句柄丟了,這樣做到與選項卡一一對應(yīng)。RichTextBox 添加一第二是:當(dāng) RichTextBox的文本改變時,要改變文本是否保存的狀態(tài),這要給 個 TextChanged 處理函數(shù) Form1_TextChanged(object sender, EventArgs e):14 / 13void Form1_TextCha nged(object sen der, Even tArgs e)獲得控件r、11、12 (第十設(shè)計思路)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)選項卡相互切換時,也有一些事情要處理的,比如說在一個選項卡里未保存文本,保存按 鈕需要保持可用狀態(tài),但是當(dāng)切換到另一個選項卡時可能它是已經(jīng)保存的,保存按鈕繼續(xù)保持不可用狀態(tài), 這需要一些判斷和處理,當(dāng)然還有其他一些操作:private void target(object sender. EventArgs e) 窗口切換/獲得選項卡里的控件,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) 查找下一個 NToolStripMenultem.Enabled = true;else 查找下一個 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)選項卡關(guān)閉時也有一些處理,比如說文本沒有保存的話要給用戶一個保存修改的機會
11、,要 實現(xiàn)像遨游那樣雙擊可以關(guān)閉,我設(shè)置了雙擊函數(shù),并且選項卡的右鍵菜單的關(guān)閉選項的處理也直接使用 這個雙擊函數(shù),主要實現(xiàn)關(guān)閉選項卡的功能,但是為了使用戶操作,我至少要有一個選項卡留在窗口不能 關(guān)閉,所以最后一個選項卡不能關(guān)閉的:void tabC on trol1_DoubleClick(object sen der, Even tArgs e)獲得選項卡里的控件,r為RichTextBox , l1為路徑欄,l2為保存提示欄if (m > 1)/當(dāng)窗口數(shù)量 m > 1時才執(zhí)行關(guān)閉功能if (l2.Text ="已保存"| l2.Text ="打開&
12、quot;) tabCo ntrol1.SelectedTab.Dispose();m-;else string message, title; DialogResult result;/文本需要保存時要給出提示信息對話框 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)/獲得選項卡里的控件,r為RichTextBox ,11為路徑欄,12為保存提示欄f = new Fon tDialog(); f.ShowColor = true; f.ShowApply = true; /下面添加一個處理函數(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)字體對話框的應(yīng)用按鈕被按下時發(fā)生/獲得選項卡里的控件,r為RichTextBox ,11為路徑欄,l2為保存提示欄r.Select ionFont = f.Font;r.Select ion Color = f.Color;r.Fo
16、cus();第六是:查找對話框的制作,說了這個其實替換對話框就不要說了:private void findFun 1(object sen der, Even tArgs e) /執(zhí)行向下查找的功能,fs=0表示沒有選擇文本,否則選擇了文本/獲得選項卡里的控件,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é)束對話框");else fs = 1; r.Focus();private void findFun2(object sender, EventArgs e) /執(zhí)行向上查
18、找的功能,fs=0表示沒有選擇文本/獲得選項卡里的控件,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é)束對話框");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)閉查找對話框的功能,有些數(shù)據(jù)需要重置fc = 0; 查找下一個 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; /查找對話框的數(shù)目為1/如果已經(jīng)存在查找對話框則關(guān)閉前一個,永遠(yuǎn)保持只有一個對話框給用戶操作查找下一個 NToolStripMenultem.Enabled = true; find.button3.Click += new EventHandler(findFun1); fin d.butto n2.Click += new Even tHa ndler(fi ndFu n2);添加查找對話框按鈕的處理函數(shù),在上面fin d.butto n1.Click += new Even tHa ndler(fi ndClose); fin d.Show();第七是:獲得系統(tǒng)時間 ->
22、; r.SelectedText = DateTime.Now.ToStri ng();第八是:保存文件,另存為,這里列舉保存的代碼:private void 保存 SToolStripMenultem_Click(object sender, EventArgs e)獲得選項卡里的控件,r為RichTextBox , 11為路徑欄,l2為保存提示欄if (l2 != null)if (l2.Text ="新建")/比較特殊,因為沒有保存路徑所以需要與用戶進(jìn)行對話 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;/ 保存按鈕不可用第九是:退出程序時的處理:(沒有保存的文件需要和用戶進(jìn)行對話,確定保存與否)private void 退出 ToolStripMenultem_Click(object
25、 sender, EventArgs e)if (v > 0) /其中v是未保存文本的記數(shù)數(shù)量,有未保存的文本需要和用戶取得對話 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;獲得選項卡里的控件,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 /取消動作/end if (v > 0)else this.Close(); /如果沒有未保存的文本則直接關(guān)閉不需要提醒用戶第十是:獲得選項卡里的控件
28、,r為RichTextBox ,11為路徑欄,12為保存提示欄,這樣就差不多解決了整個程序了,因為程序的基本框架已經(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;第是:獲得絕對路
29、徑下的文件名,save.FileName是絕對路徑tabCo ntrol1.SelectedTab.Text = System.I O. Path.GetFileName(save.FileName); 第十二是:當(dāng)按鈕可用時要設(shè)置為true屬性:(否則設(shè)為 flase)復(fù)制 CToolStripMenultem.Enabled = true; 查找 FToolStripMenultem.Enabled = true; 轉(zhuǎn)至U ToolStripMenultem.Enabled = true; 時間與日期 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; 第十三是:變量的說明:(定義了幾個全局變量下面分別說明)m是選項卡個數(shù),動態(tài)變化int NF =
32、 1,m=0,v=0; NF是記數(shù)新建文件的次數(shù),只加不減, / v是需要進(jìn)行保存的選項卡個數(shù),也是動態(tài)變化的一個值 private MessageBoxButt ons butt on;/退出時提示對話框的按鈕風(fēng)格 private MessageBoxlcon icon; /退出時提示對話框的圖標(biāo)風(fēng)格FontDialog f; /字體對話框,因為兩個函數(shù)共用它所以設(shè)為全局變量Form2 find; int start=0 , fc = 0,fs=0;/查找對話框,start是被選擇的文本在RichTextBox中的位置,/ fc是在工作中查找對話框的個數(shù),fs=O表示沒有選擇文本,否則選擇了
33、文本Form3 tiH = null;/替換對話框四、實驗效果圖:1、選項卡可以雙擊關(guān)閉,也可以在右鍵菜單里選擇關(guān)閉選項來關(guān)閉,如圖:2、字體設(shè)置,彈岀的對話框自動獲得字體的屬性,并顯示,而且實現(xiàn)應(yīng)用功能:U丨回丨埜1I-Of不四 小五.S 號U口3、顏色對話框的設(shè)置和字體對話框差不多,都是能自動獲得所選擇字體的顏色并在對話框里體現(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 !基本驗色(1:確定取梢str &t or車面 Vkans obckukE oae. t t£書仔體©眈inuig脅証 :口 !_ L廠 !_ = 自定義碩色©:規(guī)定自走義顏色0»C : DocnAeut E andl Set tingsAda ini5、查找對話框?qū)崿F(xiàn)了界面置頂,當(dāng)查找到文本頭或尾時將提示并不循環(huán)查找元素:6、替換對話框也設(shè)置了置頂功能,不過在岀現(xiàn)提示“替換完畢!”時會暫時失去置頂效果,這是界面的要求:a 回文件(已編輯(目格式©幫助(也矗建 行扛旺 H保蠱亀復(fù)n就翅 rK 1創(chuàng)壬住 ®as芭iiiyg 礎(chǔ)MewT exheiio world &&&&* ±舊文本:新文本二替換取消C" iD>oh. tk.n<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會計處理流程試題及答案
- 2025年貴州航天職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年系統(tǒng)規(guī)劃與管理師試題及答案的拓展研究
- 2025年西雙版納職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年(2019-2024年)真題考點試卷含答案解析
- 2025年蘇州工業(yè)園區(qū)職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))歷年真題考點含答案解析
- 中小學(xué)教師資格考試的價值觀引導(dǎo)問題試題及答案
- 以考促學(xué)初級會計師考試試題及答案
- 2024年01月東莞市塘廈鎮(zhèn)下屬事業(yè)單位2024年公開招考9名人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025年稅務(wù)師考試知識點評試題及答案
- 數(shù)學(xué)好玩《包裝的學(xué)問》(教學(xué)設(shè)計)-2023-2024學(xué)年北師大版數(shù)學(xué)五年級下冊
- 消防安全知識培訓(xùn)課件文庫
- 2025年合肥興泰金融控股(集團)有限公司招聘23人筆試參考題庫附帶答案詳解
- 邊坡支護(hù)施工方案
- 【國企】火力發(fā)電工程建設(shè)安全標(biāo)準(zhǔn)化圖冊230P
- 環(huán)境規(guī)劃與管理概述課件
- 撫州市崇仁縣鄉(xiāng)鎮(zhèn)街道社區(qū)行政村統(tǒng)計表
- 工程甲方指令單
- 扒胎機的使用
- 民用爆炸物品出口審批單
- SJG 63-2019 建設(shè)工程建筑廢棄物減排與綜合利用技術(shù)標(biāo)準(zhǔn)-高清現(xiàn)行
- smm7 中文版 工程量清單
評論
0/150
提交評論