プロジェクトにカーソルファイルがあります。コードで絶対パスを指定しました
F:/r.cur
問題はこれがハードコーディングされたパスであり、相対パスが必要なので、ソリューションを別のシステムに移動してもコードが影響しないようにします。
相対パスの設定方法を提案してください
//current code i am using
p.Cursor = new Cursor("F:/r.cur");
静的なDirectory
クラスを使用できます-ただし、現在のディレクトリは、プロセスが開始された元のディレクトリとは異なります。
System.IO.Directory.GetCurrentDirectory();
したがって、次を使用して、アプリケーション実行可能ファイルのディレクトリパスを取得できます。
System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath);
use Application.StartupPath は、アプリケーションを起動した実行可能ファイルのパスを返します。
string pathCur = Path.Combine(Application.StartupPath, @"..\..\r.cur");
Cursor = new Cursor(pathCur);
また得ることができますSystem.IO.Directory.GetCurrentDirectory();
ただし、binおよびdebugフォルダーも表示されます。これらのフォルダーが必要ない場合は、コードを使用できます。
string page = "E:\abccom\Cat\Mouse.aspx"
string name = Path.GetFileName(page );
string nameKey = Path.GetFileNameWithoutExtension(page );
string directory = Path.GetDirectoryName(page );
Console.WriteLine("{0}, {1}, {2}, {3}",
page, name, nameKey, directory);
出力:
GetFileName:Mouse.aspx
GetFileNameWithoutExtension:マウス
GetDirectoryName:E:\ abccom\Cat
Happy Coding:)
System.IO.Directory.GetCurrentDirectory()
を使用して、現在の作業ディレクトリを取得できます。現在の実行可能パスが返されます。
ありがとう
Application.StartupPathは、アプリケーションが実行されている場所からアプリケーションパスを提供する必要があります。アプリケーションフォルダの下にディレクトリ構造を作成します。たとえば、「C:\ Program Files\MyApp」が私のアプリケーションフォルダーである場合、その下にcursorsという名前のフォルダー(C:\ Program Files\MyApp\Cursors ")を作成し、このフォルダー内にすべてのカーソルを配置します。
System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)
は起動時にフルパスを提供します。
その後、*本当に何かを見つけたい場合開発中(他の回答ポイントのコメントとして)*、最初にFileInfo(thestringwithfilenamepath).Directory.Name
を使用してパスを見つけます。