Clipboard.SetDataObject メソッド

定義

クリップボードをクリアし、データをクリップボードに追加します。

オーバーロード

SetDataObject(Object)

クリップボードをクリアし、データをクリップボードに非永続的に貼り付けます。

SetDataObject(Object, Boolean)

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

SetDataObject(Object, Boolean, Int32, Int32)

クリップボードをクリアした後、指定した回数、指定した試行間隔でクリップボードにデータの貼り付けを試み、オプションで、アプリケーションが終了したときにクリップボードにデータを残したままにします。

SetDataObject(Object)

クリップボードをクリアし、データをクリップボードに非永続的に貼り付けます。

public:
 static void SetDataObject(System::Object ^ data);
public static void SetDataObject (object data);
static member SetDataObject : obj -> unit
Public Shared Sub SetDataObject (data As Object)

パラメーター

data
Object

クリップボードに貼り付けるデータ。

例外

データをクリップボードに貼り付けることができませんでした。 この例外は、通常、クリップボードが別のプロセスで使用されている場合に発生します。

現在のスレッドがシングル スレッド アパートメント (STA: Single Thread Apartment) モードになっていません。 アプリケーションの Main メソッドに STAThreadAttribute を追加してください。

data の値が null です。

次のコード例では、非永続テキスト データをシステム クリップボードに配置するために使用 SetDataObject します。 button1_Clickこのメソッドでは、選択したテキストがクリップボードからtextBox1コピーされ、クリップボードに貼り付けられます。 button2_Clickメソッドでは、情報はクリップボードから取得され、に表示されますtextBox2。 このコードは、、、button2、、textBox1を想定button1し、textBox2フォーム上に作成および配置されています。

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( "" ) )
      {
         Clipboard::SetDataObject( textBox1->SelectedText );
      }
      else
      {
         textBox2->Text = "No text selected in textBox1";
      }
   }

   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.";
      }
   }
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);
    else
       textBox2.Text = "No text selected in textBox1";
 }
 
 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.";
    }
 }
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)
    Else
        textBox2.Text = "No text selected in textBox1"
    End If
End Sub
 
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

注釈

アプリケーションが終了すると、システム クリップボードからデータが削除されます。

このメソッドは、データを 100 ミリ秒間隔で 10 回設定しようと試み、すべての試行が失敗した場合に an を ExternalException スローします。

注意

オブジェクトをクリップボードに格納するには、それがシリアル化できる必要があります。 このメソッドにシリアル化できないオブジェクトを渡すと、例外がスローされずに失敗します。 シリアル化の詳細については、以下を参照してください System.Runtime.Serialization

Clipboard クラスは、STA (シングル スレッド アパートメント) モードに設定されたスレッドでのみ使用できます。 このクラスを使用するには、お使いの Main メソッドが STAThreadAttribute 属性でマークされているようにします。

こちらもご覧ください

適用対象

SetDataObject(Object, Boolean)

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

public:
 static void SetDataObject(System::Object ^ data, bool copy);
public static void SetDataObject (object data, bool copy);
static member SetDataObject : obj * bool -> unit
Public Shared Sub SetDataObject (data As Object, copy As Boolean)

パラメーター

data
Object

クリップボードに貼り付けるデータ。

copy
Boolean

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

例外

データをクリップボードに貼り付けることができませんでした。 この例外は、通常、クリップボードが別のプロセスで使用されている場合に発生します。

現在のスレッドがシングル スレッド アパートメント (STA: Single Thread Apartment) モードになっていません。 アプリケーションの Main メソッドに STAThreadAttribute を追加してください。

data の値が null です。

次のメソッドは、アプリケーションで実行されます。 選択したテキスト データの永続的なコピーがシステム クリップボードのテキスト ボックスに配置されます。 このコードは、textBox1フォーム上にbutton1作成されtextBox2、配置されていることを前提としています。

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( "" ) )
      {
         Clipboard::SetDataObject( textBox1->SelectedText, true );
      }
      else
      {
         textBox2->Text = "No text selected in textBox1";
      }
   }
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";
 }
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

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

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.";
      }
   }
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.";
    }
 }
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

注釈

パラメーターが指定 copy されている場合、 falseアプリケーションの終了時にシステム クリップボードからデータが削除されます。

このメソッドは、データを 100 ミリ秒間隔で 10 回設定しようと試み、すべての試行が失敗した場合に an を ExternalException スローします。

注意

オブジェクトをクリップボードに格納するには、それがシリアル化できる必要があります。 このメソッドにシリアル化できないオブジェクトを渡すと、例外がスローされずに失敗します。 シリアル化の詳細については、以下を参照してください System.Runtime.Serialization

Clipboard クラスは、STA (シングル スレッド アパートメント) モードに設定されたスレッドでのみ使用できます。 このクラスを使用するには、お使いの Main メソッドが STAThreadAttribute 属性でマークされているようにします。

こちらもご覧ください

適用対象

SetDataObject(Object, Boolean, Int32, Int32)

クリップボードをクリアした後、指定した回数、指定した試行間隔でクリップボードにデータの貼り付けを試み、オプションで、アプリケーションが終了したときにクリップボードにデータを残したままにします。

public:
 static void SetDataObject(System::Object ^ data, bool copy, int retryTimes, int retryDelay);
public static void SetDataObject (object data, bool copy, int retryTimes, int retryDelay);
static member SetDataObject : obj * bool * int * int -> unit
Public Shared Sub SetDataObject (data As Object, copy As Boolean, retryTimes As Integer, retryDelay As Integer)

パラメーター

data
Object

クリップボードに貼り付けるデータ。

copy
Boolean

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

retryTimes
Int32

クリップボードにデータの貼り付けを試みる回数。

retryDelay
Int32

試行と試行の間の休止時間 (ミリ秒)。

例外

現在のスレッドがシングル スレッド アパートメント (STA: Single Thread Apartment) モードになっていません。 アプリケーションの Main メソッドに STAThreadAttribute を追加してください。

datanullです。

retryTimes が 0 未満です。

または retryDelay が 0 未満です。

データをクリップボードに貼り付けることができませんでした。 この例外は、通常、クリップボードが別のプロセスで使用されている場合に発生します。

注釈

クリップボードが別のスレッドまたはアプリケーションでビジー状態の場合、クリップボードへのデータの追加が失敗することがあります。 この方法は、クリップボードの使用が多い環境でこの問題を回避するのに役立ちます。

パラメーターが指定 copy されている場合、 falseアプリケーションの終了時にシステム クリップボードからデータが削除されます。

注意

オブジェクトをクリップボードに格納するには、それがシリアル化できる必要があります。 このメソッドにシリアル化できないオブジェクトを渡すと、例外がスローされずに失敗します。 シリアル化の詳細については、以下を参照してください System.Runtime.Serialization

Clipboard クラスは、STA (シングル スレッド アパートメント) モードに設定されたスレッドでのみ使用できます。 このクラスを使用するには、お使いの Main メソッドが STAThreadAttribute 属性でマークされているようにします。

こちらもご覧ください

適用対象