日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中的Clipboard与ContextMenuStrip应用举例

發布時間:2023/12/10 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中的Clipboard与ContextMenuStrip应用举例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天,突然想起了怎樣在一個文本中實現復制、剪切與粘貼的功能,并給這些功能添加右鍵的快捷方式。于是,就用自己的VS2008寫了一個簡單的小應用,以熟悉C#中剪貼板與快捷菜單的使用。

首先,我們不難發現,剪貼板大致上有復制、粘貼和剪切三個功能。

復制,就是將選定的內容復制到內存當中;粘貼,則將內存中的數據寫到所選中的區域或容器上,如文本區TextArea中,C#語言則往往是RichTextBox;剪切,可以把選定的內容復制到內存中,并清除掉這些選中的東西。

那么三個功能的實現我們可以大致這樣定義:

復制:選中+存儲

粘貼:選中+取出

剪切:選中+存儲+清除

接著,我們可以考慮快捷菜單的設計,這種菜單屬于彈出式菜單,點擊鼠標右鍵可以將該菜單調出來。在C#中就是ContextMenuStrip,在Java中貌似叫PopedMenu。

最后將上述兩者結合起來,制作一個包含了復制、粘貼和剪切功能的快捷菜單。按照一般軟件的設計,當剪貼板中沒有內容時,“粘貼”一項應該呈灰色,標識不可用。

用C#對上述內容進行實現,寫了一個很簡單的程序:

這時候,剪貼板上沒有東西,所以“粘貼”一項不可用。

對內容進行復制、粘貼或剪切粘貼,則粘貼功能被激活:

給出部分程序代碼,不當之處請大家指正。


????

///?<summary>
????
///?剪貼板和快捷菜單示例
????
///?</summary>
????public?partial?class?SampleClipBoard?:?Form
????{
????????
///?<summary>
????????
///?構造方法
????????
///?</summary>
????????public?SampleClipBoard()
????????{
????????????InitializeComponent();
????????}
????????

?
///?<summary>
????????
///?復制編輯區上的一段文字到剪切板
????????
///?</summary>
????????
///?<param?name="sender"></param>
????????
///?<param?name="e"></param>
????????private?void?tsmiCopy_Click(object?sender,?EventArgs?e)
????????{
????????????Clipboard.SetDataObject(richTextBox.SelectedText);
????????}

????????
///?<summary>
????????
///?粘貼一段文字到選定區域
????????
///?</summary>
????????
///?<param?name="sender"></param>
????????
///?<param?name="e"></param>
????????private?void?tsmiPaste_Click(object?sender,?EventArgs?e)
????????{
????????????IDataObject?data;
????????????data?
=?Clipboard.GetDataObject();
????????????
//如果數據為文本,則使用其指定的RichTextBox文本
????????????if?(data.GetDataPresent(DataFormats.Text))
????????????{
????????????????richTextBox.SelectedText?
=?data.GetData(DataFormats.Text).ToString();
????????????}
????????}

????????
///?<summary>
????????
///?將選定的內容剪切到剪貼板
????????
///?</summary>
????????
///?<param?name="sender"></param>
????????
///?<param?name="e"></param>
????????private?void?tsmiCut_Click(object?sender,?EventArgs?e)
????????{
????????????Clipboard.SetDataObject(richTextBox.SelectedText);
????????????richTextBox.SelectedText?
=?"";
????????}

????????
///?<summary>
????????
///?快捷菜單打開時的狀態設定方法
????????
///?<para>若剪貼板中內容為空,則粘貼選項失效。</para>
????????
///?</summary>
????????
///?<param?name="sender"></param>
????????
///?<param?name="e"></param>
????????private?void?contextMenuStrip_Opening(object?sender,?CancelEventArgs?e)
????????{
????????????
if?(!Clipboard.ContainsData(DataFormats.Text))
????????????{
????????????????tsmiPaste.Enabled?
=?false;
????????????}
????????????
else
????????????{
????????????????tsmiPaste.Enabled?
=?true;
????????????}
????????}
????}

?

?

最后,還有一個值得注意的問題,那就是快捷菜單要顯示出來,必須以某一容器為框架,也就是說,某個容器要能彈出菜單,則必須在其ContextMenuStrip一欄填上ContextMenuStrip類的對象名稱。

例如這里的richTextBox中的ContextMenuStrip屬性,選擇了一個快捷菜單:

?

對于快捷菜單的更多內容,我們可以右擊ContextMenuStrip的某個控件,選擇當中的編輯項,編輯更多的屬性。而進行C#開發時參考MSDN,則是十分重要。

轉載于:https://www.cnblogs.com/jhxk/articles/2236242.html

總結

以上是生活随笔為你收集整理的C#中的Clipboard与ContextMenuStrip应用举例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。