摘 要:本文在Visual Studio 2010開發平臺上利用C#語言實現了記事本的多文檔界面、文本的拖曳功能以及對選中文本的背景色和字體的設置,解決了主窗體和子窗體菜單的合并問題。
關鍵詞:主窗體;子窗體;菜單合并;拖曳
中圖分類號:TP393 文獻標識碼:A 文章編號:1674-7712 (2014) 18-0000-01
一、基本界面
(一)主窗體界面
在Visual Studio 2010中創建一個主窗體,主窗體的name屬性為Form1,主窗體由兩個主菜單構成,名為“文件”和“窗口”。“文件”菜單的下拉菜單中包含“新建”菜單和“打開菜單”。“窗口”菜單的下來菜單中包含“橫向平鋪窗口”、“縱向平鋪窗口”以及“層疊窗口”。
(二)子窗體界面
在Visual Studio 2010中創建一個子窗體,子窗體的name屬性為Form2,由一個MenuStrip控件和一個名為rtbEditor的RichTextBox控件構成,MenuStrip控件添加兩個名為“文件”和“編輯”的MenuItem菜單,“文件”菜單中包含“打開”“保存”等子菜單。“編輯”菜單中包含“背景色”和“字體”子菜單。
二、主要菜單功能實現
(一)主窗體“新建”菜單功能
將主窗體的IsMdiContainer屬性設置為True,以確定該窗體是否是Mdi容器。當單擊主窗體的“新建”菜單時,打開子菜單,在“新建”菜單的click事件中,輸入如下代碼:
Form1 f1=new Form1();f1.MdiParent=this;f1.Show();
(二)主窗體和子窗體菜單合并
在主窗體利用“新建”菜單打開子窗體時,應該將子窗體的菜單與主窗體的菜單合并。為實現這一功能,需要修改每個菜單的MergeAction屬性和MergeIndex屬性,指定子窗體的菜單合并行為。
子窗體中各菜單的MergeAction屬性和MergeIndex屬性設置如表1所示。
1 菜單屬性
(三)“編輯”菜單中“背景色”和“字體”菜單功能的實現
添加ColorDialog組件和FontDialog組件,并將其屬性name該為cdDemo和fdDemo。在“背景色”菜單的click事件中添加如下代碼:
if (cdDemo.ShowDialog()==DialogResult.OK){rtbEditor.SelectionBackColor=cdDemo.Color;}
在“字體”菜單的click事件中添加如下代碼:
if(fdDemo.ShowDialog()==DialogResult.OK){rtbEditor.SelectionColor=fdDemo.Color;rtbEditor.SelectionFont=fdDemo.Font;}
三、實現文本的拖放功能
Windows窗體提供了可用于在應用程序中實現拖放功能的事件,通過以下步驟可以實現文本的拖放功能。
首先將RichTextBox控件的AllowDrop屬性設置為true;然后在RichTextBox控件的MouseDown事件中添加如下代碼:
if(rtbEditor.SelectedText!=\"\")rtbEditor.DoDragDrop(rtbEditor.SelectedText,DragDropEffects.Move);
再次在RichTextBox控件的DragEnter事件中添加如下代碼:
if(e.Data.GetDataPresent(DataFormats.Text))e.Effect=DragDropEffects.Move;
else e.Effect=DragDropEffects.None;}
最后在RichTextBox控件的DragDrop事件中添加如下代碼:
inti;Stringsi=rtbEditor.SelectionStart;s=rtbEditor.Text.Substring(i);rtbEditor.Text=rtbEditor.Text.Substring(0,i);
rtbEditor.Text=rtbEditor.Text+e.Data.GetData(DataFormats.Text).ToString();rtbEditor.Text=rtbEditor.Text+s;
運行之后,即可實現文本的拖曳功能。
四、結束語
一般的記事本是屬于單文檔界面,本文將記事本構建成多文檔界面。并通過實例實現了對記事本中選中的文本設置背景顏色和設置字體。同時,也實現了文本的拖曳功能和文檔的合并功能。
參考文獻:
[1]姜曉東.C#4.0權威指南[M].北京:機械工業出版社,2011.