- PR -

ドラッグアンドドロップ操作が上手くいかない

1
投稿者投稿内容
くくぽぽ
会議室デビュー日: 2005/11/22
投稿数: 17
お住まい・勤務地: 関西
投稿日時: 2007-11-04 14:47
皆様
いつもお世話になっております

現在、Windows Vista(64bit)、VS2005(32bit) C#で開発をしています。

Formとrichtextboxしかないアプリに、
WordPadのテキストを選択し、ドラッグアンドドロップすると、
richtextboxに、Wordpadのテキストがコピーされる、
という処理を入れようとしています。

以下のサイトにその対応方法が書いてあったので、サイトの通りに作ってみたのですが、
うんともすんともいいません。

http://msdn2.microsoft.com/ja-jp/library/fkw1hc6t.aspx


作成したイベントハンドラにブレークポイントを置き、ドラッグアンドドロップしても、
ブレークポイントにひっかからないので、根本的に何かがおかしいと思うのですが…。
以下に、Form1.csのソースを示します。
何かおかしな点があったらご指摘頂けないでしょうか…。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.AllowDrop = true;
this.richTextBox1.AllowDrop = true;
this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.richTextBox1_DragEnter);
this.richTextBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.richTextBox1_DragDrop);
}

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



_________________
In the middle of every difficulty lies opportunity --Albert Einstein

[ メッセージ編集済み 編集者: くくぽぽ 編集日時 2007-11-04 14:50 ]

[ メッセージ編集済み 編集者: くくぽぽ 編集日時 2007-11-04 14:50 ]
くくぽぽ
会議室デビュー日: 2005/11/22
投稿数: 17
お住まい・勤務地: 関西
投稿日時: 2007-11-04 15:40
自己レスです。

色々と調査して分かったのですが、
別にrichtextboxのallowdropをfalseにした状態でも、同じ
richtextbox内でのドラッグアンドドロップはできるみたいです。
MSDNの説明とどうも違う様な…?
でも、別にallowdropをfalseにしたからといって、ドラッグアンドドロップができなく
なるという説明はどこにもないので、問題ないのかもしれませんが…。

しかし、MSDNのサイトにある、
別プロセス(wordpad)からのドラッグアンドドロップは相変わらずできません。

いったいどうなっているのでしょうか???
くくぽぽ
会議室デビュー日: 2005/11/22
投稿数: 17
お住まい・勤務地: 関西
投稿日時: 2007-11-04 15:44
更なる自己レスです。

どうやらVS2005から実行しているから駄目な様です。
VS2005が作成したexeを直接たたいた後で、
WordPadに入力した文字列をドラッグアンドドロップすると、
ちゃんとコピーできました。

うぅむ、どういうことでしょうか…。
とりあえず、したいことはできることが分かりましたので、
本件はクローズとして頂ければと存じます。
(もし何かご存知の方は、つっこんで頂ければと存じます)
1

スキルアップ/キャリアアップ(JOB@IT)