免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
C#中的Clipboard與ContextMenuStrip應(yīng)用舉例

今天,突然想起了怎樣在一個(gè)文本中實(shí)現(xiàn)復(fù)制、剪切與粘貼的功能,并給這些功能添加右鍵的快捷方式。于是,就用自己的VS2008寫(xiě)了一個(gè)簡(jiǎn)單的小應(yīng)用,以熟悉C#中剪貼板與快捷菜單的使用。

首先,我們不難發(fā)現(xiàn),剪貼板大致上有復(fù)制、粘貼和剪切三個(gè)功能。

復(fù)制,就是將選定的內(nèi)容復(fù)制到內(nèi)存當(dāng)中;粘貼,則將內(nèi)存中的數(shù)據(jù)寫(xiě)到所選中的區(qū)域或容器上,如文本區(qū)TextArea中,C#語(yǔ)言則往往是RichTextBox;剪切,可以把選定的內(nèi)容復(fù)制到內(nèi)存中,并清除掉這些選中的東西。

那么三個(gè)功能的實(shí)現(xiàn)我們可以大致這樣定義:

復(fù)制:選中+存儲(chǔ)

粘貼:選中+取出

剪切:選中+存儲(chǔ)+清除

接著,我們可以考慮快捷菜單的設(shè)計(jì),這種菜單屬于彈出式菜單,點(diǎn)擊鼠標(biāo)右鍵可以將該菜單調(diào)出來(lái)。在C#中就是ContextMenuStrip,在Java中貌似叫PopedMenu。

最后將上述兩者結(jié)合起來(lái),制作一個(gè)包含了復(fù)制、粘貼和剪切功能的快捷菜單。按照一般軟件的設(shè)計(jì),當(dāng)剪貼板中沒(méi)有內(nèi)容時(shí),“粘貼”一項(xiàng)應(yīng)該呈灰色,標(biāo)識(shí)不可用。

用C#對(duì)上述內(nèi)容進(jìn)行實(shí)現(xiàn),寫(xiě)了一個(gè)很簡(jiǎn)單的程序:

這時(shí)候,剪貼板上沒(méi)有東西,所以“粘貼”一項(xiàng)不可用。

對(duì)內(nèi)容進(jìn)行復(fù)制、粘貼或剪切粘貼,則粘貼功能被激活:

給出部分程序代碼,不當(dāng)之處請(qǐng)大家指正。


    

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

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

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

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

        
/// <summary>
        
/// 快捷菜單打開(kāi)時(shí)的狀態(tài)設(shè)定方法
        
/// <para>若剪貼板中內(nèi)容為空,則粘貼選項(xiàng)失效。</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;
            }
        }
    }

 

 

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

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

 

對(duì)于快捷菜單的更多內(nèi)容,我們可以右擊ContextMenuStrip的某個(gè)控件,選擇當(dāng)中的編輯項(xiàng),編輯更多的屬性。而進(jìn)行C#開(kāi)發(fā)時(shí)參考MSDN,則是十分重要。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
是系統(tǒng)菜單--編輯項(xiàng)中的復(fù)制,粘貼
Winform中實(shí)現(xiàn)將照片剪貼到系統(tǒng)剪切板中(附代碼下載)
VB實(shí)現(xiàn)窗口的彈出式菜單
TreeView與ContextMenuStrip
RichTextBox 控件插入圖片的兩種方法 - 代碼發(fā)布 - 編程 ,PLM研究,PLM,PDM,漂亮妹,漂亮美,漂亮嗎,漂亮媽,plm是什么 - Powered by Discuz!
c# winform 關(guān)于DataGridView的一些操作(1)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服