DOBON.NETプログラミング掲示板過去ログ
ツリービューを使ったドラッグ&ドロップがうまくいかないんです(>_<)
題名: ツリービューを使ったドラッグ&ドロップがうまくいかないんです(>_<)
著者: HOGE
日時: 2004/07/26 15:19:51
ID: 5125
この記事の返信元:
(なし)
この記事への返信:
[5144]
Re[1]: ツリービューを使ったドラッグ&ドロップがうまくいかないんです(>_<)
NowhereMan
2004/07/27 17:37:54
[5146]
Re[1]: ツリービューを使ったドラッグ&ドロップがうまくいかないんです(>_<)
HOGE
2004/07/27 18:10:03
[解決]
ツリーを表示
環境/言語:[.NET Framework1.1 VSC#2003 Windows2000SP4]
分類:[.NET]
はじめまして。ツリービューに列挙されたアイテム(エクスプローラー風のツリービューでファイルまで展開しています)をドラッグして同一フォーム上のテキストボックスにドロップし内容を表示しようとしています。
Windowsのエクスプローラからファイルをテキストボックス内にドロップしたときは正常に処理されるんですがツリービューからがうまくいきません。
どなたかお知恵を拝借出来ないでしょうか?ソースは以下のようになっています。
よろしくお願いします。
*テキストボックス(自作のツリービュー以外からのドロップは問題ありません)
private void textBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
textBox1.Text = String.Empty;
string[] File_Name = (string[])e.Data.GetData(DataFormats.FileDrop);
FileInfo F = new FileInfo(File_Name[0].ToString());
StreamReader SR = null;
if(F.Exists == true)
{
try
{
FileStream FS = new FileStream(F.FullName,FileMode.Open,FileAccess.Read);
SR = new StreamReader(FS,Encoding.Default);
textBox1.Text = SR.ReadToEnd();
}
catch(Exception E)
{
MessageBox.Show(E.Message,"エラー",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
finally
{
if(SR != null)
{
SR.Close();
}
}
}
}
private void textBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.FileDrop)==true)
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
*ツリービュー
private void treeView1_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
TreeNode itm = (TreeNode)e.Item;
try
{
FileInfo F = new FileInfo(itm.FullPath);
if(F.Exists == true)
{
try
{
DataObject Obj = new DataObject(DataFormats.FileDrop,F.FullName);
treeView1.DoDragDrop(Obj,DragDropEffects.Copy);
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message,"エラー",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message,"エラー",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
題名: Re[1]: ツリービューを使ったドラッグ&ドロップがうまくいかないんです(>_<)
著者: NowhereMan
日時: 2004/07/27 17:37:54
ID: 5144
この記事の返信元:
[5125]
ツリービューを使ったドラッグ&ドロップがうまくいかないんです(>_<)
HOGE
2004/07/26 15:19:51
この記事への返信:
(なし)
ツリーを表示
■No5125に返信(HOGEさんの記事)
> うまくいきません。
具体的に現象を書きましょう。どのような例外が発生するか、など。
おそらく、TextBox側の
> string[] File_Name = (string[])e.Data.GetData(DataFormats.FileDrop);
で、例外InvalidCastExceptionが発生しているのではないでしょうか?
TextBox側では上記のようにstringの配列が渡されることを想定していますが、
TreeView側では
> DataObject Obj = new DataObject(DataFormats.FileDrop,F.FullName);
のようにstringを渡そうとしているので。
題名: Re[1]: ツリービューを使ったドラッグ&ドロップがうまくいかないんです(>_<)
著者: HOGE
日時: 2004/07/27 18:10:03
ID: 5146
この記事の返信元:
[5125]
ツリービューを使ったドラッグ&ドロップがうまくいかないんです(>_<)
HOGE
2004/07/26 15:19:51
この記事への返信:
(なし)
ツリーを表示
NowhereMan 付き人さん、こんにちわ。
> private void textBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
> {
> if(e.Data.GetDataPresent(DataFormats.FileDrop)==true)
> {
> e.Effect = DragDropEffects.Copy;
> }
> else
> {
> e.Effect = DragDropEffects.None;
> }
> }
>
ここが悪かったみたいです。FileDropに一致していなかったので
ここで受け取りが拒否されていてドロップしたら何も無い状態になってたみたいです。
有難うございました。
解決済み!
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
はじめまして。ツリービューに列挙されたアイテム(エクスプローラー風のツリービューでファイルまで展開しています)をドラッグして同一フォーム上のテキストボックスにドロップし内容を表示しようとしています。
Windowsのエクスプローラからファイルをテキストボックス内にドロップしたときは正常に処理されるんですがツリービューからがうまくいきません。
どなたかお知恵を拝借出来ないでしょうか?ソースは以下のようになっています。
よろしくお願いします。
*テキストボックス(自作のツリービュー以外からのドロップは問題ありません)
private void textBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
textBox1.Text = String.Empty;
string[] File_Name = (string[])e.Data.GetData(DataFormats.FileDrop);
FileInfo F = new FileInfo(File_Name[0].ToString());
StreamReader SR = null;
if(F.Exists == true)
{
try
{
FileStream FS = new FileStream(F.FullName,FileMode.Open,FileAccess.Read);
SR = new StreamReader(FS,Encoding.Default);
textBox1.Text = SR.ReadToEnd();
}
catch(Exception E)
{
MessageBox.Show(E.Message,"エラー",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
finally
{
if(SR != null)
{
SR.Close();
}
}
}
}
private void textBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.FileDrop)==true)
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
*ツリービュー
private void treeView1_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
TreeNode itm = (TreeNode)e.Item;
try
{
FileInfo F = new FileInfo(itm.FullPath);
if(F.Exists == true)
{
try
{
DataObject Obj = new DataObject(DataFormats.FileDrop,F.FullName);
treeView1.DoDragDrop(Obj,DragDropEffects.Copy);
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message,"エラー",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message,"エラー",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}