




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目二我的MDI記事本Ⅱ.1任務(wù)一:“我的MDI記事本”主窗體及子窗體設(shè)計Ⅱ.2任務(wù)二:“我的MDI記事本”功能實(shí)現(xiàn)Ⅱ.3任務(wù)三:“我的MDI記事本”的修飾——皮膚Ⅱ.1任務(wù)一:“我的MDI記事本”主窗體及子窗體設(shè)計
Ⅱ.1.1功能描述通過工具箱中RichTextBox控件和ToolStrip控件以及MDI窗體的應(yīng)用,實(shí)現(xiàn)“我的MDI記事本”的父子窗體設(shè)計。“我的MDI記事本”父窗體如圖Ⅱ.1所示,“我的MDI記事本”父子窗體如圖Ⅱ.2所示。圖Ⅱ.1“我的MDI記事本”父窗體圖Ⅱ.2“我的MDI記事本”父子窗體Ⅱ.1.2設(shè)計步驟及要點(diǎn)解析
(1)單擊Notepad,設(shè)置其IsMdiContainer屬性為True,設(shè)置其WindowState屬性為Maximized。在項(xiàng)目一“我的SDI記事本”的基礎(chǔ)上加入新的菜單項(xiàng),并設(shè)置各自的Name和Text屬性,并修改編輯菜單項(xiàng)、窗口菜單項(xiàng)、格式菜單項(xiàng)和查看菜單項(xiàng),如表Ⅱ.1所示。(2)在工具箱中將ToolStrip控件拖放到該窗體,設(shè)置其Name屬性為tsNotepad后,添加所需ToolStripButton,設(shè)置各自的Name和Text屬性,并根據(jù)需要設(shè)置DisplayStyle和Image屬性,如表Ⅱ.2所示。(3)在窗體上拖放控件FontDialog和ColorDialog,并分別設(shè)置對象名稱為fontDlg和colorDlg。
(4)在解決方案資源管理器中右鍵單擊項(xiàng)目名稱,選擇快捷菜單“添加”→“新建文件夾”,并命名為Resources。將欲作為背景的圖片導(dǎo)入Resources文件夾。
(5)在VisualStudio中點(diǎn)擊“項(xiàng)目”→“添加Windows窗體”,或在“解決方案資源管理器”中右鍵單擊本項(xiàng)目,選擇“添加”→“Windows窗體”,輸入名稱“TextForm”,單擊“添加”按鈕。該窗體為子窗體。
(6)在工具箱中將RichTextBox控件拖放到該窗體,并設(shè)置其Name屬性為txtBox,Text屬性為“無標(biāo)題”。其它屬性的設(shè)置見表Ⅱ.3。要點(diǎn)解析:
(1)設(shè)置IsMdiContainer屬性為True表示將當(dāng)前窗體設(shè)置為MDI窗體的父窗體。
(2)“—”為ToolStripSeparator,即作為工具欄按鈕的分隔符。
(6)?BorderStyle屬性為None表示設(shè)置當(dāng)前窗體為無邊框模式;EnableAutoDragDrop屬性為True表示啟用文本和其他數(shù)據(jù)的拖放操作;Modifiers屬性值為Public表示設(shè)置當(dāng)前子窗體的RichTextBox控件對象的可見性級別為公有的,即在父窗體可訪問子窗體的RichTextBox控件;ScrollBars屬性定義滾動條;Multiline屬性值為True表示文本可跨越多行;WordWrap屬性為True表示在當(dāng)前RichTextBox中可自動換行。Ⅱ.1.3知識庫
1.?ToolStrip控件
ToolStrip控件即工具欄控件,一般由多個按鈕、標(biāo)簽等排列組成,通過這些項(xiàng)可以快速地執(zhí)行程序提供的一些常用命令,比使用菜單選擇更加方便快捷。
Windows窗體中添加一個ToolStrip控件后,窗體頂端會出現(xiàn)一個工具欄,單擊工具欄上的小箭頭彈出下拉菜單,其中每一項(xiàng)都是可以使用在工具欄上的項(xiàng)類型,常用的有Button(按鈕)、Label(標(biāo)簽)、ComboBox(組合框)、SplitButton(分隔按鈕)和TextBox(文本框)等控件。單擊某項(xiàng)即可將其添加到工具欄上,也可以通過ToolStrip控件的Items屬性調(diào)用“項(xiàng)集合編輯器”對話框完成工具欄的編輯。
2.?RichTextBox控件
RichTextBox控件不僅允許輸入和編輯文本,同時還提供了標(biāo)準(zhǔn)TextBox控件所沒有的指定格式的許多功能。標(biāo)準(zhǔn)TextBox控件用到的所有屬性、事件和方法,RichTextBox控件幾乎都能支持,且RichTextBox控件并沒有和標(biāo)準(zhǔn)TextBox控件一樣具有64?KB字符容量的限制。對于RichTextBox控件文本的任何部分,均可通過設(shè)定其屬性指定格式,并可以使用控件的方法(LoadFile和SaveFile)直接讀寫文件。RichTextBox控件的屬性或方法見表Ⅱ.5。Ⅱ.2任務(wù)二:“我的MDI記事本”功能實(shí)現(xiàn)
Ⅱ.2.1功能描述
代碼實(shí)現(xiàn)“我的記事本”父子窗體的主要功能。
Ⅱ.2.2功能代碼展示及要點(diǎn)解析
(1)在父窗體類中導(dǎo)入名稱空間。
1usingSystem.IO;
(2)創(chuàng)建父窗體對象并賦值。
2publicstaticNotepadnpForm;
3publicNotepad()
4{
5InitializeComponent();
6npForm=this;
7}代碼分析:
2創(chuàng)建一個靜態(tài)的主窗體對象,便于在子窗體中訪問。
6在構(gòu)造函數(shù)中把自身賦值給這個對象,子窗體就能直接使用Notepad.npForm來
調(diào)用父窗體而不必實(shí)例化。
(3)在父窗體類中定義當(dāng)前激活的子窗體對象。
8TextFormtfForm=newTextForm();
(4)父窗體類的MDI子窗體激活事件。
9privatevoidNotepad_MdiChildActivate(objectsender,System.EventArgse)
10{
11tfForm=(TextForm)this.ActiveMdiChild;
12}
(5)在父窗體類中定義對話框返回值對象。
13publicDialogResultresult;
(6)父窗體“新建”子菜單項(xiàng)。
14privatevoidtsmiNew_Click(objectsender,EventArgse)
15{
16TextFormtfForm=newTextForm();
17tfForm.MdiParent=this;
18tfForm.Show();
19}代碼分析:
17設(shè)置新建窗體的父窗體為當(dāng)前窗體。
18子窗體顯示。
(7)父窗體“退出”子菜單項(xiàng)。
20publicvoidtsmiExit_Click(objectsender,EventArgse)
21{
22this.Close();
23}
代碼分析:
22關(guān)閉當(dāng)前窗體。
(8)父窗體自定義獲取文件的方法。
24privatevoidGetFile(stringpath)
25{
26StreamReadersr=newStreamReader(path,System.Text.Encoding.Default);
27tfForm.txtBox.Text=sr.ReadToEnd();
28tfForm.tempFile=tfForm.txtBox.Text;
29sr.Close();
30}代碼分析:
26定義一個文件流對象為sr,用于讀取指定路徑的文件。
27將文件流中的數(shù)據(jù)賦值為子窗體RichTextBox控件的文本信息。
28將子窗體RichTextBox控件的文本信息賦值給當(dāng)前子窗體的全局變量tempFile。
29關(guān)閉讀文件流。
(9)父窗體“打開”子菜單項(xiàng)。
31privatevoidtsmiOpen_Click(objectsender,EventArgse)
32{
33boolalready=false;
34OpenFileDialogdlg=newOpenFileDialog();
35dlg.Filter="文本文件|*.txt|cs文件|*.cs|java文件|*.java|html文件|*.html";
36dlg.Multiselect=true;
37if(dlg.ShowDialog()==DialogResult.OK)
38{
39for(inti=0;i<dlg.FileNames.Length;++i)
40{
41for(intj=0;j<this.MdiChildren.Length;++j)
42{
43MdiChildren[j].Activate();
44if(tfForm.tempFilePath==dlg.FileNames[i])
45{
46already=true;
47break;
48}
49}
50if(already==false)
51{
52tsmiNew_Click(sender,e);
53GetFile(dlg.FileNames[i]);
54tfForm.tempFilePath=dlg.FileNames[i];
55tfForm.Text=Path.GetFileName(dlg.FileNames[i]);
56}
57}
58}
59}代碼分析:
33定義一個布爾類型的局部變量already,用于判斷是否已存在將要打開的文件,初始為False。
34創(chuàng)建打開對話框?qū)ο骴lg。
35設(shè)置打開文件的類型。
36設(shè)置對話框允許選擇多個文件。
39使用循環(huán)變量i指向選擇要打開的文件。
41使用循環(huán)變量j指向每個要打開文件所在的子窗體。
43激活當(dāng)前子窗體。
44判斷當(dāng)前被激活窗體的文件路徑是否與將要打開的文件路徑一致,即若已存在將要打開的文件。
47強(qiáng)制退出當(dāng)前子窗體。
50若將要打開的文件不存在。
52執(zhí)行與子菜單項(xiàng)“新建”一致的功能,調(diào)用該菜單項(xiàng)的單擊事件。
53調(diào)用自定義的打開文件的方法GetFile(),指定當(dāng)前參數(shù)為當(dāng)前打開文件的文件名。
54把文件路徑賦值給當(dāng)前tfForm對象的tempFilePath。
55設(shè)置當(dāng)前窗體的標(biāo)題信息為打開文件的文件名。
(10)父窗體“保存”子菜單項(xiàng)。
60publicvoidSave(stringpath)
61{
62StreamWritersw=newStreamWriter(path,false,System.Text.Encoding.Default);
63sw.Write(tfForm.txtBox.Text);
64tfForm.tempFile=tfForm.txtBox.Text;
65sw.Close();
66}代碼分析:
60自定義直接保存的方法,參數(shù)為保存文件的路徑。
62使用寫文件流創(chuàng)建一個對象sw,其中第1個參數(shù)為路徑;第2個參數(shù)為True表示
在原文本后面繼續(xù)添加,為False則覆蓋原文本;第3個參數(shù)是解碼。
63將當(dāng)前窗體的文本框的文本信息寫到文件流中。
64將當(dāng)前窗體的文本框的文本內(nèi)容賦值給當(dāng)前的窗體對象的tempFile屬性。
65保存并關(guān)閉文件流。
(11)“另存為”子菜單項(xiàng)。
67privatevoidtsmiSaveAs_Click(objectsender,EventArgse)
68{
69SaveFileDialogdlg=newSaveFileDialog();
70dlg.Filter="文本文件|*.txt|cs文件|*.cs|java文件|*.java|html文件|*.html";
71if(dlg.ShowDialog()==DialogResult.OK)
72{
73Save(dlg.FileName);
74tfForm.tempFilePath=dlg.FileName;
75tfForm.Text=Path.GetFileName(dlg.FileName);
76}
77}代碼分析:
69創(chuàng)建保存文件對話框?qū)ο蟆?/p>
70設(shè)置保存文件對話框保存的文件類型。
73調(diào)用自定義的保存方法,指定參數(shù)值為當(dāng)前保存對話框所指定的文件名。
74把文件路徑賦值給當(dāng)前tfForm對象的tempFilePath。
75將當(dāng)前窗體的標(biāo)題欄信息設(shè)置為已經(jīng)保存的文件名。
(12)父窗體“保存”子菜單項(xiàng)。
78privatevoidtsmiSave_Click(objectsender,EventArgse)
79{
80if(tfForm.tempFilePath=="")
81tsmiSaveAs_Click(sender,e);
82else
83Save(tfForm.tempFilePath);
84}代碼分析:
80若存儲路徑的全局變量為空,則為首次保存。
81首次保存執(zhí)行與“另存為”子菜單項(xiàng)單擊事件一致的功能。
83若不是首次保存,則調(diào)用直接保存的方法沿用原有的路徑直接保存。
(13)父窗體“剪切”子菜單項(xiàng)。
85publicvoidtsmiCut_Click(objectsender,EventArgse)
86{
87tfForm.txtBox.Cut();
88}
(14)父窗體“復(fù)制”子菜單項(xiàng)。
89publicvoidtsmiCopy_Click(objectsender,EventArgse)
90{
91tfForm.txtBox.Copy();
92}
(15)父窗體“粘貼”子菜單項(xiàng)。
93publicvoidtsmiPaste_Click(objectsender,EventArgse)
94{
95tfForm.txtBox.Paste();
96}
(16)父窗體“撤銷”子菜單項(xiàng)。
97publicvoidtsmiUn_Click(objectsender,EventArgse)
98{
99tfForm.txtBox.Undo();
100}
(17)父窗體“恢復(fù)”子菜單項(xiàng)。
101publicvoidtsmiRe_Click(objectsender,EventArgse)
102{
103tfForm.txtBox.Redo();
104}
(18)父窗體“刪除”子菜單項(xiàng)。
105publicvoidtsmiDel_Click(objectsender,EventArgse)
106{
107tfForm.txtBox.SelectedText="";
108}
(19)父窗體“全選”子菜單項(xiàng)。
109publicvoidtsmiSelectAll_Click(objectsender,EventArgse)
110{
111tfForm.txtBox.SelectAll();
112}
(20)父窗體“自動換行”子菜單項(xiàng)。
113privatevoidtsmiWordWrap_Click(objectsender,EventArgse)
114{
115if(tfForm.txtBox.WordWrap==false)
116{
117tfForm.txtBox.ScrollBars=RichTextBoxScrollBars.ForcedVertical;
118tfForm.txtBox.WordWrap=true;
119}
120else
121{
122tfForm.txtBox.WordWrap=false;
123tfForm.txtBox.ScrollBars=RichTextBoxScrollBars.ForcedBoth;
124}
125}代碼分析:
115判斷是否支持自動換行。
117設(shè)置當(dāng)前子窗體對象的文本框滾動條為垂直滾動條。
118設(shè)置自動換行。
122取消自動換行。
123設(shè)置當(dāng)前子窗體對象的文本框滾動條為垂直和水平滾動條。
(21)父窗體“字體”子菜單項(xiàng)。
126privatevoidtsmiFont_Click(objectsender,EventArgse)
127{
128if(fontDlg.ShowDialog()==DialogResult.OK)
129{
130if(tfForm.txtBox.SelectedText!="")
131tfForm.txtBox.SelectionFont=fontDlg.Font;
132else
133tfForm.txtBox.Font=fontDlg.Font;
134}
135}代碼分析:
130判斷當(dāng)前是否有選中的文本。
131改變當(dāng)前選中文本的字體為字體對話框中所選擇的字體。
133若沒有選中文字,則將所有文本的字體設(shè)置為字體對話框所選中的字體。
(22)父窗體“顏色”子菜單項(xiàng)。
136privatevoidtsmiColor_Click(objectsender,EventArgse)
137{
138if(colorDlg.ShowDialog()==DialogResult.OK)
139{
140if(tfForm.txtBox.SelectedText!="")
141tfForm.txtBox.SelectionColor=colorDlg.Color;
142else
143tfForm.txtBox.ForeColor=colorDlg.Color;
144}
145}代碼分析:
138打開顏色對話框,并判斷是否按下對話框的“確定”按鈕。
140判斷當(dāng)前是否有選中的文本。
141設(shè)置當(dāng)前選中文本的顏色為顏色對話框中所選擇的顏色。
143設(shè)置文本框中的所有文本的顏色為顏色對話框中所選擇的顏色。
(23)父窗體“狀態(tài)欄”子菜單項(xiàng)。
146privatevoidtsmiStatusBar_Click(objectsender,EventArgse)
147{
148if(tsmiStatusBar.Checked==true)
149ssNotPad.Visible=true;
150else
151ssNotPad.Visible=false;
152}代碼分析:
148判斷“狀態(tài)欄”子菜單項(xiàng)是否為選中狀態(tài)。
149若“狀態(tài)欄”子菜單項(xiàng)為選中狀態(tài),則狀態(tài)欄可見。
151若“狀態(tài)欄”子菜單項(xiàng)為非選中狀態(tài),則狀態(tài)欄不可見。
(24)父窗體“背景圖片”子菜單項(xiàng)。
153privatevoidtsmiBI2_Click(objectsender,EventArgse)
154{
155this.BackgroundImage=Properties.Resources.秋千_1440_900_;
156}代碼分析:
155使用“Properties.Resources.圖片名稱”引用一張圖片作為當(dāng)前窗體的背景圖片。
(25)父窗體“水平平鋪”工具欄按鈕。
157privatevoidtsBtnHorizontal_Click(objectsender,EventArgse)
158{
159this.LayoutMdi(MdiLayout.TileHorizontal);
160}代碼分析:
159使用MDI窗體的排列方法LayoutMdi,設(shè)置子窗體的布局為水平平鋪。
(26)父窗體“層疊排放”工具欄按鈕。
161privatevoidtsBtnCascade_Click(objectsender,EventArgse)
162{
163this.LayoutMdi(MdiLayout.Cascade);
164}
代碼分析:
163使用MDI窗體的排列方法LayoutMdi,設(shè)置子窗體的布局為層疊排放。
(27)父窗體“新建”工具欄按鈕。
165privatevoidtsBtnNew_Click(objectsender,EventArgse)
166{
167tsmiNew_Click(sender,e);
168}
代碼分析:
167“新建”按鈕執(zhí)行與“新建”菜單項(xiàng)一致的功能,調(diào)用“新建”子菜單項(xiàng)的單擊事件。由于“新建”按鈕被單擊后所操作對象為新的子窗體,并沒有操作原來存在的子窗體,所以此時直接調(diào)用菜單的單擊事件。
(28)父窗體“打開”工具欄按鈕。
169privatevoidtsBtnOpen_Click(objectsender,EventArgse)
170{
171tsmiOpen_Click(sender,e);
172}
(29)父窗體“退出”工具欄按鈕。
173privatevoidtsBtnExit_Click(objectsender,EventArgse)
174{
175tsmiExit_Click(sender,e);
176}
(30)父窗體“關(guān)閉文本”工具欄按鈕。
177privatevoidtsBtnClose_Click(objectsender,EventArgse)
178{
179if(this.ActiveMdiChild!=null)
180tfForm.Close();
181}
代碼分析:
180若存在活動子窗體,則當(dāng)前子窗體關(guān)閉。
(31)父窗體“保存”工具欄按鈕。
182privatevoidtsBtnSave_Click(objectsender,EventArgse)
183{
184if(this.ActiveMdiChild!=null)
185tsmiSave_Click(sender,e);
186}
(32)父窗體“顏色”工具欄按鈕。
187privatevoidtsBtnColor_Click(objectsender,EventArgse)
188{
189if(this.ActiveMdiChild!=null)
190tsmiColor_Click(sender,e);
191}
(33)父窗體自定義Change方法,用于關(guān)閉文本或退出時提示是否保存。
192publicvoidChange(objectsender,EventArgse)
193{
194if(this.ActiveMdiChild!=null)
195{
196if(tfForm.txtBox.Text!=tfForm.tempFile)
197{
198result=MessageBox.Show(“文件”+tfForm.Text+“的文字已經(jīng)改變。\n\n想保存文件嗎?”,“我的記事本”,MessageBoxButtons.YesNoCancel,MessageBoxIcon.Exclamation);
199if(result==DialogResult.Yes)
200tsmiSave_Click(sender,e);
201}
202else
203result=DialogResult.None;
204}
205}代碼分析:
194判斷是否存在活動的子窗體。
196判斷當(dāng)前文本框內(nèi)的文本與打開或保存時存儲在tempFile中的文本是否一致。
198顯示消息框提示是否保存,并把對話框返回值賦值給result。
199判斷是否按下消息框的“確定”按鈕。
200若按下消息框的“確定”按鈕,則調(diào)用“保存”子菜單項(xiàng)的單擊事件。
203若當(dāng)前文本框內(nèi)的文本與打開或保存時存儲在tempFile中的文本一致,則result值設(shè)定為無。
(34)父窗體的FormClosing事件。
206privatevoidNotepad_FormClosing(objectsender,FormClosingEventArgse)
207{
208while(this.ActiveMdiChild!=null)
209{
210Change(sender,e);
211if(result==DialogResult.Cancel){
212e.Cancel=true;
213break;}
214else
215tfForm.Dispose();
216}
217}代碼分析:
208循環(huán)判斷是否存在子窗體。
210當(dāng)存在子窗體時,調(diào)用自定義的Change方法,進(jìn)行文本的保存。
211判斷顯示消息框時是否按下“取消”按鈕。
212若顯示消息框時按下“取消”按鈕,則取消父窗體的關(guān)閉。
213強(qiáng)制退出循環(huán)體。
215若顯示消息框時按下非取消按鈕,則釋放子窗體。
(35)父窗體“文件”菜單的DropDownOpened事件。
218privatevoidtsmiFile_DropDownOpened(objectsender,EventArgse)
219{
220if(this.ActiveMdiChild==null)
221{
222tsmiSave.Enabled=false;
223tsmiSaveAs.Enabled=false;
224}
225else
226{
227tsmiSave.Enabled=true;
228tsmiSaveAs.Enabled=true;
229}
230}代碼分析:
218菜單項(xiàng)的DropDownOpened事件用來確定子菜單項(xiàng)什么時候可用什么時候不
可用。
220判斷是否存在活動的子窗體。
222若不存在活動的子窗體,則“保存”子菜單項(xiàng)不可用。
223若不存在活動的子窗體,則“另存為”子菜單項(xiàng)不可用。
227若存在活動的子窗體,則“保存”子菜單項(xiàng)可用。
228若存在活動的子窗體,則“另存為”子菜單項(xiàng)可用。
(36)父窗體“編輯”菜單的DropDownOpened事件。
231publicvoidtsmiEdit_DropDownOpened(objectsender,EventArgse)
232{
233if(this.ActiveMdiChild==null)
234{
235tsmiUn.Enabled=false;
236tsmiRe.Enabled=false;
237tsmiCopy.Enabled=false;
238tsmiCut.Enabled=false;
239tsmiPaste.Enabled=false;
240tsmiDel.Enabled=false;
241tsmiSelectAll.Enabled=false;
242}
243else
244{
245if(tfForm.txtBox.SelectedText!="")
246{
247tsmiCopy.Enabled=true;
248tsmiCut.Enabled=true;
249tsmiDel.Enabled=true;
250}
251else
252{
253tsmiCopy.Enabled=false;
254tsmiCut.Enabled=false;
255tsmiDel.Enabled=false;
256}
257if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text)==true)
258tsmiPaste.Enabled=true;
259else
260tsmiPaste.Enabled=false;
261if(tfForm.txtBox.CanUndo==true)
262tsmiUn.Enabled=true;
263else
264tsmiUn.Enabled=false;
265if(tfForm.txtBox.CanRedo==true)
266tsmiRe.Enabled=true;
267else
268tsmiRe.Enabled=false;
269if(tfForm.txtBox.Text!="")
270tsmiSelectAll.Enabled=true;
271else
272tsmiSelectAll.Enabled=false;
273}
274}代碼分析:
233若不存在活動的子窗體,則“編輯”菜單下的所有子菜單項(xiàng)不可用。
245若存在活動的子窗體并且文本框中有選中的文本,則“剪切”、“復(fù)制”、“刪
除”子菜單項(xiàng)可用。
251若存在活動的子窗體并且文本框中有選中的文本,則“剪切”、“復(fù)制”、“刪
除”子菜單項(xiàng)不可用。
257判斷當(dāng)前系統(tǒng)剪貼板是否存在可以粘貼的文本數(shù)據(jù)。
258若當(dāng)前系統(tǒng)剪貼板存在可以粘貼的文本數(shù)據(jù),則“粘貼”子菜單項(xiàng)可用。
260若當(dāng)前系統(tǒng)剪貼板不存在可以粘貼的文本數(shù)據(jù),則“粘貼”子菜單項(xiàng)不可用。
261判斷是否能撤銷前一個操作。
262若能撤銷前一個操作,則“撤銷”子菜單項(xiàng)可用。
264若不能撤銷前一個操作,則“撤銷”子菜單項(xiàng)不可用。
265判斷是否能對撤銷的操作重新應(yīng)用。
266若能對撤銷的操作重新應(yīng)用,則“恢復(fù)”子菜單項(xiàng)可用。
268若不能對撤銷的操作重新應(yīng)用,則“恢復(fù)”子菜單項(xiàng)不可用。
269判斷文本框內(nèi)的文本是否為空。
270若文本框內(nèi)的文本內(nèi)容不為空,則“全選”子菜單項(xiàng)可用。
272若文本框內(nèi)的文本內(nèi)容為空,則“全選”子菜單項(xiàng)不可用。
(37)父窗體“格式”菜單的DropDownOpened事件。
275privatevoidtsmiFormat_DropDownOpened(objectsender,EventArgse)
276{
277if(this.ActiveMdiChild==null)
278{
279tsmiWordWrap.Enabled=false;
280tsmiFont.Enabled=false;
281tsmiColor.Enabled=false;
282}
283else
284{
285tsmiWordWrap.Enabled=true;
286tsmiFont.Enabled=true;
287tsmiColor.Enabled=true;
288}
289}代碼分析:
277若不存在活動的子窗體,則“格式”下所有子菜單項(xiàng)“自動換行”、“字體”、“顏
色”不可用。
283若存在活動的子窗體,則“格式”下所有子菜單項(xiàng)“自動換行”、“字體”、“顏色”可用。
(38)在子窗體類中定義各個成員變量。
290publicstringtempFilePath="無標(biāo)題";
291publicstringtempFile="";
代碼分析:
290該變量用于存儲打開或保存文件時的路徑。
291該變量用于存儲打開或保存文件時RichTextBox的文本內(nèi)容。
(39)子窗體RichTextBox的MouseDown事件。
292privatevoidtxtBox_MouseDown(objectsender,MouseEventArgse)
293{
294if(e.Button==MouseButtons.Right)
295this.txtBox.ContextMenuStrip=this.contextMenuStrip1;
296}代碼分析:
294判斷是否在RichTextBox中按下鼠標(biāo)右鍵。
295若在RichTextBox中按下鼠標(biāo)右鍵,則設(shè)置文本框的快捷菜單為編輯菜單。
(40)子窗體菜單“粘貼”的單擊事件。
297privatevoidtsmiPaste_Click(objectsender,EventArgse)
298{
299Notepad.npForm.tsmiPaste_Click(sender,e);
300}
代碼分析:
299使用靜態(tài)父窗體對象npForm調(diào)用主窗體的“粘貼”子菜單項(xiàng),余下的“剪切”、“復(fù)制”、“刪除”、“全選”、“撤銷”、“恢復(fù)”使用相同方法調(diào)用。
(41)子窗體快捷菜單打開時子菜單能否使用的判斷。
301privatevoidcontextMenuStrip1_Opened(objectsender,EventArgse)
302{
303if(txtBox.SelectedText!="")
304{
305tsmiCopy.Enabled=true;
306tsmiCut.Enabled=true;
307tsmiDel.Enabled=true;
308}
309else
310{
311tsmiCopy.Enabled=false;
312tsmiCut.Enabled=false;
313tsmiDel.Enabled=false;
314}
315if(Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
316tsmiPaste.Enabled=true;
317else
318tsmiPaste.Enabled=false;
319if(txtBox.CanUndo==true)
320tsmiUn.Enabled=true;
321else
322tsmiUn.Enabled=false;
323if(txtBox.CanRedo==true)
324tsmiRe.Enabled=true;
325else
326tsmiRe.Enabled=false;
327if(txtBox.Text!="")
328tsmiAll.Enabled=true;
329else
330tsmiAll.Enabled=false;
331}
(42)子窗體的FormClosing事件。
332privatevoidTextForm_FormClosing(objectsende
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子競技在社區(qū)文化建設(shè)中的作用與實(shí)踐案例分析
- 2025至2030年中國粗牙普通螺紋擠壓絲錐數(shù)據(jù)監(jiān)測研究報告
- 私營學(xué)校租房合同范本
- 二零二五年度農(nóng)村房屋出租給房東的租賃合同
- 2025年度飲用水品牌授權(quán)與合作經(jīng)營合同
- 上海臨港:2024年第一季度報告
- 2025至2030年中國磁粉數(shù)據(jù)監(jiān)測研究報告
- 科技助力下的電影推廣模式研究
- 2025至2030年中國碗碟架數(shù)據(jù)監(jiān)測研究報告
- 衣服收入合同范本
- 基于OBE理念的項(xiàng)目式學(xué)習(xí)模式設(shè)計與應(yīng)用研究
- 模糊多屬性決策方法及其在物流服務(wù)供應(yīng)鏈管理中的應(yīng)用研究
- 2024年廣東省《輔警招聘考試必刷500題》考試題庫含答案
- 國家科技安全教學(xué)課件
- DB3301T 1088-2018 杭州龍井茶栽培技術(shù)規(guī)范
- 2010浙G22 先張法預(yù)應(yīng)力混凝土管樁
- 安徽省部分省示范中學(xué)2025屆高三第一次模擬考試英語試卷含解析
- 工程機(jī)械租賃服務(wù)方案及保障措施 (二)
- 2024年可行性研究報告投資估算及財務(wù)分析全套計算表格(含附表-帶只更改標(biāo)紅部分-操作簡單)
- 翻譯批評與賞析課件
- 國際貿(mào)易地理 全套課件
評論
0/150
提交評論