次の方法で共有


方法: Windows フォーム RichTextBox コントロールでドラッグ アンド ドロップ操作を有効にする

Windows フォーム RichTextBox コントロールを使用したドラッグ アンド ドロップ操作は、DragEnter イベントと DragDrop イベントを処理することによって実行されます。 したがって、ドラッグ アンド ドロップ操作は、RichTextBox コントロールを使用して非常に簡単です。

RichTextBox コントロールでドラッグ操作を有効にするには

  1. AllowDrop コントロールの RichTextBox プロパティを trueに設定します。

  2. DragEnter イベントのイベント ハンドラーにコードを記述します。 if ステートメントを使用して、ドラッグされるデータが許容される型 (この場合はテキスト) であることを確認します。 DragEventArgs.Effect プロパティは、DragDropEffects 列挙体の任意の値に設定できます。

    Private Sub RichTextBox1_DragEnter(ByVal sender As Object, _
       ByVal e As System.Windows.Forms.DragEventArgs) _
       Handles RichTextBox1.DragEnter
       If (e.Data.GetDataPresent(DataFormats.Text)) Then
          e.Effect = DragDropEffects.Copy
       Else
          e.Effect = DragDropEffects.None
       End If
    End Sub
    
    private void richTextBox1_DragEnter(object sender,
    System.Windows.Forms.DragEventArgs e)
    {
       if (e.Data.GetDataPresent(DataFormats.Text))
          e.Effect = DragDropEffects.Copy;
       else
          e.Effect = DragDropEffects.None;
    }
    
    private:
       void richTextBox1_DragEnter(System::Object ^  sender,
          System::Windows::Forms::DragEventArgs ^  e)
       {
          if (e->Data->GetDataPresent(DataFormats::Text))
             e->Effect = DragDropEffects::Copy;
          else
             e->Effect = DragDropEffects::None;
       }
    

    (Visual C# と Visual C++)フォームのコンストラクターに次のコードを配置して、イベント ハンドラーを登録します。

    this.richTextBox1.DragEnter += new
        System.Windows.Forms.DragEventHandler
        (this.richTextBox1_DragEnter);
    
    this->richTextBox1->DragEnter += gcnew
       System::Windows::Forms::DragEventHandler
       (this, &Form1::richTextBox1_DragEnter);
    
  3. DragDrop イベントを処理するコードを記述します。 DataObject.GetData メソッドを使用して、ドラッグするデータを取得します。

    次の例では、Text コントロールの RichTextBox プロパティを、ドラッグするデータと同じ値に設定します。 RichTextBox コントロールに既にテキストがある場合は、ドラッグしたテキストが挿入ポイントに挿入されます。

    Private Sub RichTextBox1_DragDrop(ByVal sender As Object, _
       ByVal e As System.Windows.Forms.DragEventArgs) _
       Handles RichTextBox1.DragDrop
       Dim i As Int16
       Dim s As String
    
       ' Get start position to drop the text.
       i = RichTextBox1.SelectionStart
       s = RichTextBox1.Text.Substring(i)
       RichTextBox1.Text = RichTextBox1.Text.Substring(0, i)
    
       ' Drop the text on to the RichTextBox.
       RichTextBox1.Text = RichTextBox1.Text + _
          e.Data.GetData(DataFormats.Text).ToString()
       RichTextBox1.Text = RichTextBox1.Text + s
    End Sub
    
    private void richTextBox1_DragDrop(object sender,
    System.Windows.Forms.DragEventArgs e)
    {
       int i;
       String s;
    
       // Get start position to drop the text.
       i = richTextBox1.SelectionStart;
       s = richTextBox1.Text.Substring(i);
       richTextBox1.Text = richTextBox1.Text.Substring(0,i);
    
       // Drop the text on to the RichTextBox.
       richTextBox1.Text = richTextBox1.Text +
          e.Data.GetData(DataFormats.Text).ToString();
       richTextBox1.Text = richTextBox1.Text + s;
    }
    
    private:
       System::Void richTextBox1_DragDrop(System::Object ^  sender,
          System::Windows::Forms::DragEventArgs ^  e)
       {
          int i;
          String ^s;
    
       // Get start position to drop the text.
       i = richTextBox1->SelectionStart;
       s = richTextBox1->Text->Substring(i);
       richTextBox1->Text = richTextBox1->Text->Substring(0,i);
    
       // Drop the text on to the RichTextBox.
       String ^str = String::Concat(richTextBox1->Text, e->Data
       ->GetData(DataFormats->Text)->ToString());
       richTextBox1->Text = String::Concat(str, s);
       }
    

    (Visual C# と Visual C++)フォームのコンストラクターに次のコードを配置して、イベント ハンドラーを登録します。

    this.richTextBox1.DragDrop += new
        System.Windows.Forms.DragEventHandler
        (this.richTextBox1_DragDrop);
    
    this->richTextBox1->DragDrop += gcnew
       System::Windows::Forms::DragEventHandler
       (this, &Form1::richTextBox1_DragDrop);
    

アプリケーションでドラッグ アンド ドロップ機能をテストするには

  1. アプリケーションを保存してビルドします。 実行中は、ワードパッドを実行します。

    ワードパッドは、ドラッグ アンド ドロップ操作を可能にする Windows によってインストールされるテキスト エディターです。 起動するには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] を選択して、WordPad ダイアログ ボックスのテキスト ボックスに「」と入力し、[OK] をクリックします。

  2. ワードパッドが開いたら、その中にテキストの文字列を入力します。 マウスを使用してテキストを選択し、選択したテキストを Windows アプリケーションの RichTextBox コントロールにドラッグします。

    RichTextBox コントロールをマウスでポイントすると (その結果、DragEnter イベントが発生します)、マウス ポインターが変化し、選択したテキストを RichTextBox コントロールにドロップできることに注意してください。

    マウス ボタンを離すと、選択したテキストがドロップされ (つまり、DragDrop イベントが発生します)、RichTextBox コントロール内に挿入されます。

こちらも参照ください