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

Visual C# 2005復制與擷取操作

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

  • 本程序范例還可以將項目的圖像資源“章立民_01”復制到剪貼板,然后再從剪貼板中取出并粘貼到RichTextBox或PictureBox控件中(如圖8.7所示)。
  • 當然,您也可以在其他應用程序中將數據復制到剪貼板,然后再于本程序范例中進行粘貼操作;反之亦然。例如,假設您已經在Microsoft Word中復制文字,則“粘貼為”菜單將會如圖8.8所示,列出剪貼板中所有可用的格式。
    充分了解了本程序范例的功能特性之后,我們要研究本程序范例的編寫技巧,說明如下:
    • 首先,您必須創建各個變量來持有文本字符串“From Microsoft Taiwan Community!”以及項目的圖像資源“章立民_01.JPG”:// 下列文本字符串會以各種不同格式來存儲文字
      \// "From Microsoft Taiwan Community!"。
      \

      \
      privatestring strText ="From Microsoft Community!";
      \
      \
      privatestring strHTML ="<P>From <B><FONT
      \

      \size
      =' 4'><U>Microsoft</U></FONT></B>" +
      \

      \
      "<FONT size=' 5' >Community!</FONT></P>";

      \

      圖8.7將項目的圖像資源進行復制與粘貼操作

      \

      圖8.8顯示剪貼板中所有可用格式

      // 將文本字符串 "From Microsoft Taiwan!" 以標準的 ANSI 文字格式復制到剪貼板。privatevoid tsmiCopyTextAsText_Click(object sender, EventArgs e)

      {

      Clipboard.SetDataObject(strText,
      true);

      }


      • 當您從“編輯”菜單中選取“將文字復制為/Text”命令時,將會執行以下的程序代碼:
        // 將文本字符串 "From Microsoft Taiwan!" 以標準的 ANSI 文字格式復制到剪貼板。privatevoid tsmiCopyTextAsText_Click(object sender, EventArgs e)

        {

        Clipboard.SetDataObject(strText,
        true);

        }


        • 當您從“編輯”菜單中選取“將文字復制為/HTML”命令時,將會運行以下的程序代碼:
          // 將文本字符串 "From Microsoft Taiwan!" 以HTML 格式復制到剪貼板。privatevoid tsmiCopyTextAsHTML_Click(

          object sender, EventArgs e)

          {

          DataObject myDataObject
          =new DataObject();



          myDataObject.SetData(DataFormats.Html, strHTML);

          Clipboard.SetDataObject(myDataObject,
          true);

          }


          • 當您從“編輯”菜單中選取“將文字復制為/RTF”命令時,將會執行以下的程序代碼:
            // 將文本字符串 "From Microsoft Taiwan!" 以 XML 格式復制到剪貼板。

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

            // 一種獨有的格式。因為此格式在本應用程序之外可能不具有意

            // 義,所以我們將 SetDataObject 方法的第二個參數設定成 False,

            // 來要求在結束本程序之后不保留剪貼板上的數據,以便不讓其他應

            // 用程序使用。privatevoid tsmiCopyTextAsXML_Click(object sender, EventArgs e)

            {

            DataObject myDataObject
            =new DataObject();

            myDataObject.SetData(
            "MyInternalXmlFormat", strXML);

            Clipboard.SetDataObject(myDataObject,
            false);

            }


            • 當您從“編輯”菜單中選取“將文字復制為/XML”命令時,將會執行以下的程序代碼:
              // 將文本字符串 "From Microsoft Taiwan!" 以 XML 格式復制到剪貼板。

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

              // 一種獨有的格式。因為此格式在本應用程序之外可能不具有意

              // 義,所以我們將 SetDataObject 方法的第二個參數設定成 False,

              // 來要求在結束本程序之后不保留剪貼板上的數據,以便不讓其他應

              // 用程序使用。privatevoid tsmiCopyTextAsXML_Click(object sender, EventArgs e)

              {

              DataObject myDataObject
              =new DataObject();

              myDataObject.SetData(
              "MyInternalXmlFormat", strXML);

              Clipboard.SetDataObject(myDataObject,
              false);

              }


              • 當您從“編輯”菜單中選取“將文字復制為/所有的格式”命令時,將會執行以下的程序代碼:
                // 將文本字符串 "From Microsoft Taiwan!" 以所有可用的格式復制到剪貼

                // 板。您只能使用 DataObject 對象來完成此項操作。我們會為每一種

                // 格式調用 DataObject 對象的 SetData 方法以便將文本字符串以該格式

                // 存入 DataObject 對象中。privatevoid tsmiCopyTextAsAllFormats_Click(object sender, EventArgs e)

                {

                // 創建一個 DataObject 對象。
                DataObject myDataObject
                =new DataObject();



                // 將文本字符串以標準的ANSI 文字格式存入 DataObject 對象中。
                myDataObject.SetData(DataFormats.Text, strText);



                // 將文本字符串以標準的 Windows Unicode 文字格式存入 DataObject 對象中。
                myDataObject.SetData(DataFormats.UnicodeText, strText);



                // 將文本字符串以 HTML 格式存入 DataObject 對象中。
                myDataObject.SetData(DataFormats.Html, strHTML);



                // 將文本字符串以 RTF 格式存入 DataObject 對象中。
                myDataObject.SetData(DataFormats.Rtf, strRTF);



                // 將文本字符串以 XML 格式存入 DataObject 對象中。
                myDataObject.SetData(
                "MyInternalXmlFormat", strXML);



                // 將DataObject對象與其包含的所有格式數據存入剪貼板中。Clipboard.SetDataObject(myDataObject, true);
                }


                當您從“編輯”菜單中選取“將圖像復制為/Bitmap”命令時,將會執行以下的程序代碼:
                ' 將圖形文件中的圖像數據復制到剪貼板。privatevoid tsmiCopyImageAsBitmap_Click(

                object sender, EventArgs e)

                {

                try

                {

                // 創建一個 DataObject 對象。
                DataObject myDataObject
                =new DataObject();



                // 將 myImage 中的圖像數據存入 DataObject 對象中,

                // 并設定圖像數據可以被轉換成其他格式。
                myDataObject.SetData(DataFormats.Bitmap,
                true, myImage);



                // 將持有圖形文件的圖像數據的 DataObject對象存入剪貼板中。
                Clipboard.SetDataObject(myDataObject,
                true);

                }

                ...

                }


                • 請大家注意,“粘貼為”菜單是動態產生的。我們將產生“粘貼為”菜單及其子菜單項目標程序代碼編寫在“編輯”菜單項目的DropDownOpening事件處理函數中。之所以如此做,是為了能夠動態地根據剪貼板中數據的可用格式來創建“粘貼為”菜單的各個子菜單。相關程序代碼如下所示:
                  privatevoid PasteAsMenuEventHandler(object sender, System.EventArgs e)

                  {

                  string strType; // 持有格式的值。object obj; // 被用來持有要粘貼的數據。



                  // 清除 RichTextBox。this.rtbPaste.Clear();



                  // 清除 TextBox。this.txtPaste.Clear();



                  // 清除 PictureBox。this.picturePaste.Image =null;



                  // 取得用戶所選取之格式的文字。
                  strType
                  = ((ToolStripMenuItem)(sender)).Text;



                  // 確保剪貼板支持所選取的格式。if (Clipboard.GetDataObject().GetDataPresent(strType))

                  {

                  // 依所要求的格式從剪貼板中取得數據并賦給obj。
                  obj
                  = Clipboard.GetDataObject().GetData(strType);



                  if (obj !=null)

                  {

                  // 使用 RichTextBox 控件的 Paste方法以便以指定的剪貼板格式

                  // 將剪貼板的內容粘貼到 RichTextBox控件中。this.rtbPaste.Paste(

                  DataFormats.GetFormat(strType));



                  // 將純文字表示粘貼到 TextBox 控件中。if (obj.GetType().ToString() =="System.String")

                  {

                  this.txtPaste.AppendText((string)(obj));

                  }

                  else

                  {

                  this.txtPaste.AppendText(obj.GetType().ToString());

                  }



                  // 嘗試粘貼到PictureBox控件中。

                  // 如果失敗的話,表示PictureBox不支持此格式,

                  // 因此會將 Image 設定成 Null 以便清除圖像。try

                  {

                  picturePaste.Image
                  = (Image)(obj);

                  }

                  ...

                  }

                  }

                  }


                  • 以下所示則是事件處理函數PasteAsMenuEventHandler的程序代碼,它會負責處理所有的粘貼菜單項目的Click事件,而不管哪一種格式被選。
                    privatevoid PasteAsMenuEventHandler(object sender, System.EventArgs e)

                    {

                    string strType; // 持有格式的值。object obj; // 被用來持有要粘貼的數據。



                    // 清除 RichTextBox。this.rtbPaste.Clear();



                    // 清除 TextBox。this.txtPaste.Clear();



                    // 清除 PictureBox。this.picturePaste.Image =null;



                    // 取得用戶所選取之格式的文字。
                    strType
                    = ((ToolStripMenuItem)(sender)).Text;



                    // 確保剪貼板支持所選取的格式。if (Clipboard.GetDataObject().GetDataPresent(strType))

                    {

                    // 依所要求的格式從剪貼板中取得數據并賦給obj。
                    obj
                    = Clipboard.GetDataObject().GetData(strType);



                    if (obj !=null)

                    {

                    // 使用 RichTextBox 控件的 Paste方法以便以指定的剪貼板格式

                    // 將剪貼板的內容粘貼到 RichTextBox控件中。this.rtbPaste.Paste(

                    DataFormats.GetFormat(strType));



                    // 將純文字表示粘貼到 TextBox 控件中。if (obj.GetType().ToString() =="System.String")

                    {

                    this.txtPaste.AppendText((string)(obj));

                    }

                    else

                    {

                    this.txtPaste.AppendText(obj.GetType().ToString());

                    }



                    // 嘗試粘貼到PictureBox控件中。

                    // 如果失敗的話,表示PictureBox不支持此格式,

                    // 因此會將 Image 設定成 Null 以便清除圖像。try

                    {

                    picturePaste.Image
                    = (Image)(obj);

                    }

                    ...

                    }

                    }

                    }


                    程序范例3
                    圖8.9所示是程序范例CH8_DemoForm007.cs的運行畫面,它示范如何使用DataObject與Clipboard類將項目的音頻數據復制到剪貼板,然后再播放剪貼板中的音頻數據。相關程序代碼如下所示:

                    \

                    圖8.9復制與播放音頻數據

                    privatevoid btnCopyWavAudioToClipboard_Click(

                    object sender, EventArgs e)

                    {

                    try

                    {

                    // 創建一個 DataObject 對象。
                    DataObject myDataObject
                    =new DataObject();



                    // 將項目的音頻數據GoTop存入DataObject對象中,

                    // 并設定音頻數據可以被轉換成其他格式。
                    myDataObject.SetData(

                    DataFormats.WaveAudio,
                    true, Resources.GoTop);



                    // 將持有音頻數據的 DataObject 對象存入剪貼板中。
                    Clipboard.SetDataObject(myDataObject,
                    true);



                    btnPlayClipboardWavAudio.Enabled
                    =true;

                    }

                    ...

                    }



                    privatevoid btnPlayClipboardWavAudio_Click(object sender, EventArgs e)

                    {

                    try

                    {

                    // 將剪貼板中的數據以一個

                    // 實現 IDataObject 接口的對象返回。
                    IDataObject oDataObj
                    = Clipboard.GetDataObject();



                    if (oDataObj !=null)

                    {

                    // 檢測從剪貼板所返回的數據是否存在 Wav Audio 的格式。if (oDataObj.GetDataPresent(

                    DataFormats.WaveAudio))

                    {

                    // 以 Wave Audio 格式取得音頻數據并進行播放。
                    SoundPlayer player
                    =new SoundPlayer(

                    (System.IO.Stream)(

                    oDataObj.GetData(

                    DataFormats.WaveAudio,
                    true)));



                    player.Play();

                    }

                    }

                    }

                    ...
                    關鍵詞:VS.NET
                    主站蜘蛛池模板: 达拉特旗| 舟曲县| 沁水县| 盈江县| 广南县| 饶阳县| 铅山县| 新田县| 都匀市| 嘉峪关市| 景东| 山阴县| 连江县| 文登市| 安阳县| 乌兰浩特市| 绥芬河市| 马鞍山市| 武威市| 南江县| 定兴县| 连州市| 清水河县| 北辰区| 清远市| 达孜县| 方正县| 许昌县| 沛县| 荔浦县| 新龙县| 资源县| 万山特区| 泸州市| 新干县| 阿合奇县| 进贤县| 孙吴县| 土默特右旗| 寿阳县| 来凤县|