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 Subprivate 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 Subprivate 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