Windows フォーム RichTextBox コントロールを使用したドラッグ アンド ドロップ操作は、DragEnter イベントと DragDrop イベントを処理することによって実行されます。 したがって、ドラッグ アンド ドロップ操作は、RichTextBox コントロールを使用して非常に簡単です。
RichTextBox コントロールでドラッグ操作を有効にするには
AllowDrop コントロールの RichTextBox プロパティを
true
に設定します。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);
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);
アプリケーションでドラッグ アンド ドロップ機能をテストするには
アプリケーションを保存してビルドします。 実行中は、ワードパッドを実行します。
ワードパッドは、ドラッグ アンド ドロップ操作を可能にする Windows によってインストールされるテキスト エディターです。 起動するには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] を選択して、
WordPad
ダイアログ ボックスのテキスト ボックスに「」と入力し、[OK] をクリックします。ワードパッドが開いたら、その中にテキストの文字列を入力します。 マウスを使用してテキストを選択し、選択したテキストを Windows アプリケーションの RichTextBox コントロールにドラッグします。
RichTextBox コントロールをマウスでポイントすると (その結果、DragEnter イベントが発生します)、マウス ポインターが変化し、選択したテキストを RichTextBox コントロールにドロップできることに注意してください。
マウス ボタンを離すと、選択したテキストがドロップされ (つまり、DragDrop イベントが発生します)、RichTextBox コントロール内に挿入されます。
こちらも参照ください
- RichTextBox
- 方法: アプリケーション間でドラッグ アンド ドロップ操作を実行する
- RichTextBox コントロール
- Windows フォーム で使用する
コントロール
.NET Desktop feedback