2011-03-17 28 views
1

目標:
我想實現在Visual Studio 2010中創建的應用程序的路徑地址,字符串。路徑是從單元(c或d單元)到名稱應用程序。創建一個自定義路徑地址(wpf)

問題:
我無法在運行時創建自定義路徑地址。我不需要從單元到圖片名稱的完整路徑地址。

--No這個路徑地址 「d:\工作\ Modul3 \ Assignment3 \ Assignment3 \ BIN \調試\ logotyp_vp_final.jpg」

- 是的,請求的路徑 「d:\工作\ Modul3 \ Assignment3「

請記住,此應用程序及其應用程序的名稱和地址可以隨時更改。

namespace Assignment3 
{ 
    /// <summary> 
    /// Interaction logic for FlightForm.xaml 
    /// </summary> 
    public partial class FlightForm : Window 
    { 

     public delegate void TakeOffHandler(object source, TakeOffEventArgs e); 
     public delegate void ChangeHandler(object source, ChangeRouteEventArgs e); 

     public event TakeOffHandler TakeOffEvent; 
     public event ChangeHandler ChangeEvent; 


     public FlightForm() 
     { 
      InitializeComponent(); 

      Title = "Flight "; 

      cmbStatus.Visibility = Visibility.Hidden; 
      btnLand.Visibility = Visibility.Hidden; 

      string fullPath; 
      fullPath = System.IO.Path.GetFullPath("logotyp_vp_final.jpg"); 

      BitmapImage image = new BitmapImage(); 

      image.BeginInit(); 
      image.UriSource = new Uri(fullPath); 
      image.EndInit(); 

      image1.Source = image; 

      System.Windows.Shapes.Path path = new System.Windows.Shapes.Path(); 




     } 



     private void btnStart_Click(object sender, RoutedEventArgs e) 
     { 

      cmbStatus.Visibility = Visibility.Visible; 
      btnLand.Visibility = Visibility.Visible; 
      btnStart.Visibility = Visibility.Hidden; 

      TakeOffEvent(this, new TakeOffEventArgs("a", "b", DateTime.Now.ToString())); 
      ChangeEvent(this, new ChangeRouteEventArgs("aa", "bb", "cc")); 


     } 




    } 
} 

namespace Assignment3 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class ControlTower : Window 
    { 
     public ControlTower() 
     { 
      InitializeComponent(); 
     } 

     private FlightForm myFlightForm; 


     private void btnSendNextAirplane_Click(object sender, RoutedEventArgs e) 
     { 
      myFlightForm = new FlightForm(); 

      myFlightForm.TakeOffEvent += new FlightForm.TakeOffHandler(PrintOutTakeOff); 
      myFlightForm.ChangeEvent += new FlightForm.ChangeHandler(PrintOutChange); 
      myFlightForm.Show(); 

     } 




     public void PrintOutTakeOff(object source, TakeOffEventArgs e) 
     { 

      lstDisplay.Items.Add(new { FlightCode = e.FlightCode, Status = e.Status, Time = e.Time }); 





     } 


     public void PrintOutChange(object source, ChangeRouteEventArgs e) 
     { 
      string test = e.FlightCode + e.Status + e.Time; 

      MessageBox.Show(test); 
     } 




    } 
} 

回答

1

要獲取該應用程序的從執行的路徑:

string localPath = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath; 
string currentDirectory = Path.GetDirectoryName(localPath); 

編輯
這聽起來像是你試圖訪問你的項目之外的圖像。由於這可能在沙箱環境中有效,因此更好的做法是將圖像作爲項目的一部分包含進來,並將其作爲嵌入式資源進行訪問。

這裏有一個良好的閱讀,讓你開始:Adding and Editing Resources (Visual C#)

添加圖片作爲嵌入資源的演練

將文件添加到您的項目,一般的東西沿着線:

+solution 
    +project 
    +Resources <-- this is Visual Studio's default folder name for resources 
     +SomeDirectory 
     -logotyp_vp_final.jpg 

然後:

  1. 轉到您項目的屬性
  2. 單擊左側的資源選項卡
  3. 選擇頂部導航欄上的images資源。
  4. 選擇添加資源>添加現有文件。瀏覽到剛剛放入項目的文件,然後選擇添加它。

該文件現在顯示在您的項目屬性的資源選項卡下。在「資源」選項卡中更改文件的名稱,使其更有意義。

現在,該文件是項目的一個嵌入的資源,您可以通過以下代碼訪問它:

var MyFile = Properties.Resources.logotyp_vp_final 
+0

我得到這樣的結果: 本地路徑=「d:\\ \\工作Modul3 \\ Assignment3 \\ Assignment3 \\ bin \\ Debug \\ Assignment3.EXE「 currentDirectory =」D:\\ Work \\ Modul3 \\ Assignment3 \\ Assignment3 \\ bin \\ Debug「 它是一個標準檢索地址「bin \\ Debug」? 我的請求地址只能得到「D:\\ Work \\ Modul3 \\ Assignment3」。 – 2011-03-18 07:54:39

+0

如果您試圖在示例「logotyp_vp_final.jpg」中訪問圖像的路徑,則圖像應該是項目的一部分,而不是位於其他位置。如果將圖像作爲項目的一部分包含在內,則可以通過多種方式訪問​​圖像,即嵌入資源或僅複製到輸出目錄。是的,您收到的結果是預期的結果,因爲這是應用程序執行的位置。 – 2011-03-18 13:28:47

0

像這樣的東西應該工作:

var fullPath = System.IO.Path.GetFullPath("..\\..\\logotyp_vp_final.jpg");