首页 新闻 会员 周边

如果从自己写的文件浏览器中托拽文件到其它程序如PHOTOSHOP

0
悬赏园豆:80 [已关闭问题]

1.先将某个目录的文件在程序里以详细列表的形式显示出来(如WINDOWS的资源管理器,这里我们只显示图片文件,其它文件被过滤掉)。

2.就是问题:怎样将这些图片文件托拽到PHOTOSHOP等其它实用程序中去。

 

请高手们帮帮我啊!!!!

问题补充: 我再说一下吧,简单点儿就是这样的: 1.我在窗体里用TREEVIEW可以查看某一目录下的所有图片文件, 2.我如何将TREEVIEW里的这些图片文件托拽到PHOTOSSHOP中去????如何用实现!!!
Code Machine的主页 Code Machine | 初学一级 | 园豆:73
提问于:2009-01-05 11:44
< >
分享
其他回答(3)
0

您问的是什么问题,我怎么没看明白呢?

您如果安装了Photoshop,那么静止的图片文件自然可以在Photoshop中编辑呀,还有什么疑问呢?

刚刚 | 园豆:3151 (老鸟四级) | 2009-01-05 12:20
0

这个问题我没有思路,关注中!

我想可能会在你的程序里发送消息给操作系统,这种消息和资源浏览器的应该是一样的,只后PS才能处理。

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-05 13:10
0

drag源项目,首先lisview设置如下属性

AllowDrop = true;

然后添加事件:ItemDrag,实现代码类似下面:

 

 

private void listView1_ItemDrag(object sender, ItemDragEventArgs e) {
if (this.listView1.SelectedItems.Count <= 0) return;
//获取图片的路径。
string item = this.listView1.SelectedItems[0].SubItems[1].Text;
//DoDragDrop需要传递一个IDataObject内类型的对象。
  IDataObject obj2 = new DataObject();
obj2.SetData(DataFormats.FileDrop, new string[] { item });
this.listView1.DoDragDrop(obj2, DragDropEffects.Copy);

}

 

OK了。

之所以我会在DoDragDrop方法中传递一个上述类型的对象,以及设置DragDropEffects为Copy.

是查看了Paint.net的代码,Paint.net相当于一个drop对象。他有如下的代码。会去判断传递的数据类型,并且在类型符合的情况下,获取类型后,会设置Effect为copy.

我们在DoDragDrop方法中设置的DragDropEffects值在该出为drgevent的AllowedEffect属性值。AllowedEffect必须与Effect相同,这样才能正常的拖拽,否者鼠标会是一个禁止图标。

正是因为这样,我们要在DoDragDrop方法中设置DragDropEffects为Copy。

 

protected override void OnDragEnter(DragEventArgs drgevent)
{
if (Enabled && drgevent.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] files = (string[])drgevent.Data.GetData(DataFormats.FileDrop);

foreach (string file in files)
{
try
{
FileAttributes fa
= File.GetAttributes(file);

if ((fa & FileAttributes.Directory) == 0)
{
drgevent.Effect
= DragDropEffects.Copy;
}
}

catch
{
}
}
}

base.OnDragEnter(drgevent);
}


差不多就这样了。之后有时间看来可以写个这方面的日志。呵呵。

 

 

 

 

 

 

 

 


5yplan | 园豆:1330 (小虾三级) | 2009-01-05 15:49
0

下面文章有详细的讲解和完整的示例代码

http://www.cnblogs.com/eaglet/archive/2009/01/06/1370149.html

eaglet | 园豆:17139 (专家六级) | 2009-01-06 11:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册