2010-11-13 79 views
1

嗨 我是WPF C#的初學者,我開發了一個簡單的C#WPF應用程序,它是一個包含圖像控件的簡單窗口,我想將任何圖像文件從我的電腦,並把它的圖像控制顯示it.And我在XML文件如何在C#WPF應用程序中拖放圖像文件

<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

對不起標題是如何拖放圖像文件 – user506735 2010-11-13 14:53:34

回答

1

當從文件系統將文件拖動到程序,你沒有得到位圖數據剪貼板。您以字符串的形式獲取文件的完整路徑。您需要打開文件,讀取數據,然後設置圖像源。

+0

感謝快速回復 – user506735 2010-11-13 19:55:13

+0

我已經改變了我的代碼 – user506735 2010-11-13 19:55:54

+0

我已經改變了我的代碼成爲 private void image1_DragEnter(object sender,DragEventArgs e) if(e.Data.GetDataPresent(DataFormats.Bitmap)) e.Effects = DragDropEffects.Copy; else e.Effects = DragDropEffects。沒有; } – user506735 2010-11-13 20:05:37

1

你正在運行你的應用程序或Visual Studio,託管管理特權下的應用程序?

如果是這種情況,Windows會阻止拖放操作的發生。在Windows 7或Vista中,具有較低安全權限的應用程序(具有普通用戶權限的Windows資源管理器)無法將數據發送到具有較高安全權限的另一個應用程序(具有管理權限的應用程序或Visual Studio)。

嘗試做下列條件之一:

運行您的Visual Studio沒有管理權限。 在沒有管理權限的情況下在Visual Studio外運行您的應用程序。 啓用並持續到OS中的管理員帳戶。在這種情況下,Windows資源管理器和Visual Studio都將具有管理權限。

乾杯,

雅各

1

我有同樣的問題。結束了VS有這個奇怪的小故障,它不會顯示AllowDrop設置爲true的選項,所以你必須手動編寫它。它不會顯示在Intellitype,但它會使它工作!

所以非常簡單,只是堅持PictureBox.AllowDrop = true;到你的代碼,它會工作:d