您好 我是WPF C#的初学者,我开发了一个简单的C#WPF应用程序,它是一个包含图像控件的简单窗口,我想从我的计算机拖动任何图像文件并将其放在图像控件上以显示它。我写的本节下面的代码
XML文件中的
<Image Height="150" Name="image1" Stretch="Fill" Width="200" AllowDrop="True" Drop="image1_Drop" DragEnter="image1_DragEnter"/>
并在代码文件内(* .cs)
private void image1_DragEnter(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.Bitmap))
e.Effects=DragDropEffects.Copy;
else
e.Effects=DragDropEffects.None;
}
private void image1_Drop(object sender, DragEventArgs e)
{
image1.Source = (BitmapImage)e.Data.GetData(DataFormats.Bitmap);
}
但它不起作用(当拖动图像控件时,光标变成一个包含反斜杠的圆圈)我不知道为什么会有任何一个hlp 提前谢谢
更新了答案
我已将代码更改为以下代码,但问题相同
private void image1_DragEnter(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.Text))
e.Effects=DragDropEffects.Copy;
else
e.Effects=DragDropEffects.None;
}
private void image1_Drop(object sender, DragEventArgs e)
{
string fpath = (string)e.Data.GetData(DataFormats.Text);
BitmapImage tmpImage=new BitmapImage((new Uri(fpath)));
image1.Source = tmpImage;
}
答案 0 :(得分:1)
将文件从文件系统拖动到程序时,您无法在剪贴板中获取位图数据。您将获得该文件的完整路径,作为字符串。您需要打开文件,读取数据,然后设置图像源。
答案 1 :(得分:1)
您是否在管理权限下运行承载应用程序的应用程序或Visual Studio?
如果是这种情况,Windows会阻止拖放操作的发生。在Windows 7或Vista中,具有较低安全权限的应用程序(具有普通用户权限的Windows资源管理器)无法将数据发送到具有更高安全权限的另一个应用程序(具有管理权限的应用程序或Visual Studio)。
尝试执行以下操作之一:
运行没有管理权限的Visual Studio。 在没有管理权限的Visual Studio外部运行应用程序。 启用并长期使用操作系统中的管理员帐户。在这种情况下,Windows资源管理器和Visual Studio都具有管理权限。
干杯,
雅各
答案 2 :(得分:1)
我遇到了同样的问题。结束VS有这个奇怪的故障,它没有向您显示将AllowDrop设置设置为true的选项,因此您必须手动编写它。它不会显示在Intellitype中,但它会使它工作!
所以,只需将PictureBox.AllowDrop = true;
粘贴到您的代码中就可以了:D