成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

.NET Framework 2.0對剪貼板存取操作做了哪些強化

2010-08-28 10:50:09來源:西部e網作者:

為了讓剪貼板的數據存取操作更加便利且單純化,.NET Framework 2.0替Clipboard類新增了下列方法:
  • 您現在可以調用Clipboard.Clear方法來清除剪貼板中的所有數據。不過由于剪貼板并非是單一程序所使用的,而是多個進程所共享的,因此在調用Clear方法之前,請先確認此舉不會對其他的進程造成不良影響。
  • 我們在前一節(jié)中一再強調,Clipboard類的SetDataObject方法會使用IDataObject接口將數據以“多重格式”存儲在剪貼板中,而此舉最大的好處是,以后可以采用各種不同的格式從剪貼板中擷取數據。但是或許您就是想以特定的單一數據格式來將數據存儲在剪貼板中,而不需要使用多重格式,為了讓您以更直接的方式來完成此類操作,Clipboard類現在新增了下列數個前綴為Set的方法來讓您將數據以特定格式存入剪貼板中,而不再需要通過DataObject對象來完成:
    • Clipboard.SetText方法能夠將文字數據存入剪貼板中。
    • Clipboard.SetImage方法能夠將一個Image以Bitmap格式存入剪貼板中。
    • Clipboard.SetAudio方法能夠將數據以WaveAudio格式存入剪貼板中。
    • Clipboard.SetFileDropList方法能夠將一個文件名稱集合以FileDrop 格式存入剪貼板中。
    • Clipboard.SetData方法能夠將數據以特定的格式存入剪貼板中。
         
    1. 在我們從剪貼板提取數據之前,通常會先確認是否存在所需格式的數據。為了幫助您以更直接且便利的方式完成此類操作,Clipboard類現在新增了下列數個前綴為Contains的方法,而不再需要通過IDataObject接口來完成:
    2. Clipboard.ContainsText方法能夠判斷剪貼板中是否存在文字數據。
      •     Clipboard.ContainsImage方法能夠判斷剪貼板中是否存在Bitmap格式的數據或是數據能否轉換成Bitmap格式。
      • Clipboard.ContainsFileDropList方法能夠判斷剪貼板中是否存在FileDrop格式的數據或是數據能否轉換成FileDrop格式。
      • Clipboard.ContainsAudio方法能夠判斷剪貼板中是否存在WaveAudio格式的數據。
      • Clipboard.ContainsData方法能夠判斷剪貼板中是否存在指定格式的數據或是數據能夠轉換成所指定的格式。
           
      1. 確認剪貼板中存在所指定格式的數據后,接下來就是要將該數據提取出來。Clipboard類現在新增了下列數個前綴為Get的方法,來讓您直接提取剪貼板中特定格式的數據,而不再需要通過IDataObject接口來完成:
        • Clipboard.GetText方法能夠從剪貼板中提取文字數據。
        • Clipboard.GetImage方法能夠從剪貼板中提取圖像數據。
        • Clipboard.GetFileDropList方法能夠從剪貼板中提取文件名稱的集合。
        • Clipboard.GetAudioStream方法能夠從剪貼板中提取音頻數據流。
        • Clipboard.GetData方法能夠從剪貼板中提取特定格式的數據。
             
          顯而易見地,借助于Clipboard類新增的這些方法,將使得剪貼板的數據存取操作變得更加容易與直觀,F在,我們就要用這些方法,來改寫前一節(jié)的程序范例。
          程序范例1
          程序范例CH8_DemoForm008.cs的功能用途與前一節(jié)的第一個程序范例CH8_DemoForm005.cs完全相同,只不過本程序范例CH8_DemoForm008.cs改用Clipboard類所新提供的SetImage、ContainsImage與GetImage方法來進行剪貼板的圖像數據的存取操作。從以下的程序代碼可以看出,新的方法可以讓程序代碼更為精簡且容易了解:
          privatevoid btnCopyImageToClipboard_Click(object sender, EventArgs e)

          {

          try

          {

          // 將項目的圖像資源存入剪貼板中。
          Clipboard.SetImage(Resources.章立民的大頭照);



          btnSaveClipboardToFile.Enabled
          =true;

          }

          ...

          }



          privatevoid btnSaveClipboardToFile_Click(object sender, EventArgs e)

          {

          try

          {

          // 判斷剪貼板中是否存在圖像數據。if (Clipboard.ContainsImage())

          {

          // 使用GetImage方法取得剪貼板中的圖像數據。
          System.Drawing.Image oImgObj
          =

          Clipboard.GetImage();



          // 存儲成 Bitmap。
          oImgObj.Save(
          @"C:\Test.bmp",

          System.Drawing.Imaging.ImageFormat.Bmp);



          // 存儲成 JPEG。
          oImgObj.Save(
          @"C:\Test.jpeg"

          System.Drawing.Imaging.ImageFormat.Jpeg);



          // 存儲成 GIF。
          oImgObj.Save(
          @"C:\Test.gif",

          System.Drawing.Imaging.ImageFormat.Gif);



          Process.Start(
          "explorer.exe", @"C:\");

          }

          }

          ...

          }


          程序范例2
          程序范例CH8_DemoForm009.cs的功能用途與前一節(jié)的第二個程序范例CH8_DemoForm006.cs完全相同,只不過本程序范例CH8_DemoForm009.cs改用Clipboard類所新提供的SetText、SetImage與SetData方法來將文本字符串與圖像數據存入剪貼板中。從以下的程序代碼可以看出,新的方法可以讓程序代碼更為精簡且容易了解:
          // 將文本字符串 "From Microsoft !" 以標準的 ANSI 文字格式復制到剪貼板。privatevoid tsmiCopyTextAsText_Click(object sender, EventArgs e)

          {

          Clipboard.SetText(strText, TextDataFormat.Text);

          }



          // 將文本字符串 "From Microsoft !" 以 HTML格式復制到剪貼板。privatevoid tsmiCopyTextAsHTML_Click(object sender, EventArgs e)

          {

          Clipboard.SetText(strHTML, TextDataFormat.Html);

          }



          // 將文本字符串 "From Microsoft !" 以 RTF格式復制到剪貼板。privatevoid tsmiCopyTextAsRTF_Click(object sender, EventArgs e)

          {

          Clipboard.SetText(strRTF, TextDataFormat.Rtf);

          }



          // 將文本字符串 "From Microsoft !" 以 XML 格式復制到剪貼板。

          // 請注意,由于 XML 并不是剪貼板所自帶的格式,因而這代表

          // 一種獨有的格式。privatevoid tsmiCopyTextAsXML_Click(object sender, EventArgs e)

          {

          Clipboard.SetData(
          "MyInternalXmlFormat", strXML);

          }



          // 將項目的圖像資源存入剪貼板中。privatevoid tsmiCopyImageAsBitmap_Click(object sender, EventArgs e)

          {

          try

          {

          Clipboard.SetImage(Resources.章立民_01);

          }

          ...

          }


          仔細比較程序范例CH8_DemoForm009.cs與CH8_DemoForm006.cs之后可以發(fā)現,CH8_DemoForm009.cs仍然保留了CH8_DemoForm006.cs極大部分的寫法,尤其是在將數據以“多重格式”存儲在剪貼板中以及判斷剪貼板中擁有哪些格式的操作方面,仍然必須借助于DataObject對象以及IDataObject接口。因此大家可別以為有了新的就忘了舊的,應該學會如何綜合運用所有的技巧才是上策。
          程序范例3
          程序范例CH8_DemoForm010.cs的功能用途與前一節(jié)的第三個程序范例CH8_DemoForm007.cs完全相同,只不過本程序范例CH8_DemoForm010.cs改用Clipboard類所新提供的SetAudio、ContainsAudio與GetAudioStream方法來進行剪貼板的音頻數據的存取操作。從以下的程序代碼可以看出,新的方法可以讓程序代碼更為精簡且容易了解:
          privatevoid btnCopyWavAudioToClipboard_Click(

          object sender, EventArgs e)

          {

          try

          {

          // 將項目的音頻資源 GoTop 存入剪貼板中。
          Clipboard.SetAudio(Resources.GoTop);



          btnPlayClipboardWavAudio.Enabled
          =true;

          }

          ...

          }



          privatevoid btnPlayClipboardWavAudio_Click(object sender, EventArgs e)

          {

          try

          {

          // 判斷剪貼板中是否存在音頻數據。if (Clipboard.ContainsAudio())

          {

          // 使用 GetAudioStream 方法取得剪貼板中的音頻數據以便加以播放。
          SoundPlayer player
          =new SoundPlayer(Clipboard.GetAudioStream());

          player.Play();

          }

          }

          ...

          }
          關鍵詞:VS.NET
          主站蜘蛛池模板: 万宁市| 民权县| 许昌县| 凤山县| 广南县| 墨江| 宜春市| 上高县| 晋宁县| 临沂市| 峨山| 东乌珠穆沁旗| 周宁县| 浦县| 五大连池市| 长沙市| 巴林右旗| 南乐县| 应城市| 磴口县| 陈巴尔虎旗| 富顺县| 江永县| 衡山县| 建瓯市| 东港市| 盐池县| 墨玉县| 宜州市| 大冶市| 万安县| 张北县| 布尔津县| 璧山县| 贵港市| 且末县| 秦皇岛市| 营山县| 固原市| 通道| 淮北市|