次の方法で共有


Clipboard.SetDataObject メソッド (Object, Boolean)

データをシステム クリップボードに貼り付け、そのデータをアプリケーションが終了してもクリップボードに残しておくかどうかを指定します。

Overloads Public Shared Sub SetDataObject( _
   ByVal data As Object, _   ByVal copy As Boolean _)
[C#]
public static void SetDataObject(objectdata,boolcopy);
[C++]
public: static void SetDataObject(Object* data,boolcopy);
[JScript]
public static function SetDataObject(
   data : Object,copy : Boolean);

パラメータ

  • data
    クリップボードに貼り付けるデータ。
  • copy
    このアプリケーションが終了した後でも、データをクリップボードに残しておく場合は true 。それ以外の場合は false

例外

例外の種類 条件
ExternalException データをクリップボードに貼り付けることができませんでした。
ThreadStateException アプリケーションの ApartmentState プロパティは、 ApartmentState.STA には設定されません。
ArgumentNullException data の値が null 参照 (Visual Basic では Nothing) です。

解説

copy パラメータが false の場合は、アプリケーションが終了したときに、データがシステム クリップボードから削除されます。

メモ   クリップボードに格納するには、クラスはシリアル化可能である必要があります。シリアル化の詳細については、「 オブジェクトのシリアル化 」を参照してください。

使用例

あるアプリケーションで次のメソッドが実行されます。このメソッドは、テキスト ボックス内で選択されているテキスト データのコピーをシステム クリップボードに永続的に貼り付けます。このコードは、 button1textBox1 、および textBox2 が既に作成され、フォームに配置されていることを前提にしています。

 
Private Sub button1_Click(sender As Object, e As System.EventArgs)
    ' Takes the selected text from a text box and puts it on the clipboard.
    If textBox1.SelectedText <> "" Then
        Clipboard.SetDataObject(textBox1.SelectedText, True)
    Else
        textBox2.Text = "No text selected in textBox1"
    End If
End Sub 'button1_Click

[C#] 
private void button1_Click(object sender, System.EventArgs e) {
    // Takes the selected text from a text box and puts it on the clipboard.
    if(textBox1.SelectedText != "")
       Clipboard.SetDataObject(textBox1.SelectedText, true);
    else
       textBox2.Text = "No text selected in textBox1";
 }

[C++] 
private:
void button1_Click(Object* /*sender*/, System::EventArgs* /*e*/) {
    // Takes the selected text from a text box and puts it on the clipboard.
    if(!textBox1->SelectedText->Equals(S""))
       Clipboard::SetDataObject(textBox1->SelectedText, true);
    else
       textBox2->Text = S"No text selected in textBox1";
 }

[JScript] 
private function button1_Click(sender : Object, e : System.EventArgs) {
    //Take the selected text from a text from a text box and put it on the clipboard.
    if(textBox1.SelectedText != "")
       Clipboard.SetDataObject(textBox1.SelectedText, true);
    else
       textBox2.Text = "No text selected in textBox1";
 }

別のアプリケーションでは、次のメソッドがシステム クリップボードからテキストを取得し、 textBox2 に貼り付けます。このコードは、 button2 および textBox2 が既に作成され、フォームに配置されていることを前提にしています。

 
Private Sub button2_Click(sender As Object, e As System.EventArgs)
    ' Declares an IDataObject to hold the data returned from the clipboard.
    ' Retrieves the data from the clipboard.
    Dim iData As IDataObject = Clipboard.GetDataObject()
    
    ' Determines whether the data is in a format you can use.
    If iData.GetDataPresent(DataFormats.Text) Then
        ' Yes it is, so display it in a text box.
        textBox2.Text = CType(iData.GetData(DataFormats.Text), String)
    Else
        ' No it is not.
        textBox2.Text = "Could not retrieve data off the clipboard."
    End If
End Sub 'button2_Click

[C#] 
private void button2_Click(object sender, System.EventArgs e) {
    // Declares an IDataObject to hold the data returned from the clipboard.
    // Retrieves the data from the clipboard.
    IDataObject iData = Clipboard.GetDataObject();
 
    // Determines whether the data is in a format you can use.
    if(iData.GetDataPresent(DataFormats.Text)) {
       // Yes it is, so display it in a text box.
       textBox2.Text = (String)iData.GetData(DataFormats.Text); 
    }
    else {
       // No it is not.
       textBox2.Text = "Could not retrieve data off the clipboard.";
    }
 }

[C++] 
private:
void button2_Click(Object* /*sender*/, System::EventArgs* /*e*/) {
    // Declares an IDataObject to hold the data returned from the clipboard.
    // Retrieves the data from the clipboard.
    IDataObject* iData = Clipboard::GetDataObject();
 
    // Determines whether the data is in a format you can use.
    if(iData->GetDataPresent(DataFormats::Text)) {
       // Yes it is, so display it in a text box.
       textBox2->Text = dynamic_cast<String*>(iData->GetData(DataFormats::Text)); 
    }
    else {
       // No it is not.
       textBox2->Text = S"Could not retrieve data off the clipboard.";
    }
 }

[JScript] 
private function button2_Click(sender : Object, e : System.EventArgs) {
    //Declare an IDataObject to hold the data returned from the clipboard.
    //Then retrieve the data from the clipboard.
    var iData : IDataObject = Clipboard.GetDataObject();
 
    //Determine whether the data is in a format you can use.
    if(iData.GetDataPresent(DataFormats.Text)) {
       //Yes it is, so display it in a text box.
       textBox2.Text = String(iData.GetData(DataFormats.Text)); 
    }
    else {
       //No it is not.
       textBox2.Text = "Could not retrieve data off the clipboard.";
    }
 }

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

Clipboard クラス | Clipboard メンバ | System.Windows.Forms 名前空間 | Clipboard.SetDataObject オーバーロードの一覧 | DataObject | DataFormats | IDataObject | GetDataObject