私はビジュアルC#にまったく慣れていません。コンソールアプリを管理することはできますが、フォームのコーディングに関しては簡単に迷子になります。
私は現在、テキストファイルを1行ずつ読み取る「アプリランチャー」を作成しています。各行は、私のPCのどこかにある便利なプログラムへのパスです。リンクラベルは、テキストファイルの各パス(つまり、各行)に対して自動的に作成されます。
リンクラベルの.Textプロパティをパスの省略形(つまり、パス全体ではなくファイル名のみ)にしたいと思います。私はこの方法で文字列を短くする方法を見つけました(これまでのところとても良いです!)
ただし、フルパスをどこかに保存したいと思います。これは、リンクラベルがリンクする必要があるものだからです。Javascriptでは、次のようにこのプロパティをlinklabelに追加することができます。mylinklabel.fullpath= line; (ここで、lineはテキストファイルを読んだときの現在の行であり、fullpathはリンクラベルに追加したい「カスタム」プロパティです。宣言する必要があると思いますが、方法がわかりません。
以下は、フォームを作成し、テキストファイルを1行ずつ読み取り、各行にあるパスのリンクラベルを作成するコードの一部です。
private void Form1_Load(object sender, EventArgs e) //on form load
{
//System.Console.WriteLine("hello!");
int counter = 0;
string line;
string filenameNoExtension;
string myfile = @"c:\\users\jim\desktop\file.txt";
//string filenameNoExtension = Path.GetFileNameWithoutExtension(myfile);
// Read the file and display it line by line.
System.IO.StreamReader file = new System.IO.StreamReader(myfile);
while ((line = file.ReadLine()) != null)
{
//MessageBox.Show(line); //check whats on each line
LinkLabel mylinklabel = new LinkLabel();
filenameNoExtension = Path.GetFileNameWithoutExtension(line); //shortens the path to just the file name without extension
mylinklabel.Text = filenameNoExtension;
//string fullpath=line; //doesn't work
//mylinklabel.fullpath=line; //doesn't work
mylinklabel.Text = filenameNoExtension; //displays the shortened path
this.Controls.Add(mylinklabel);
mylinklabel.Location = new Point(0, 30 + counter * 30);
mylinklabel.AutoSize = true;
mylinklabel.VisitedLinkColor = System.Drawing.Color.White;
mylinklabel.LinkColor = System.Drawing.Color.White;
mylinklabel.Click += new System.EventHandler(LinkClick);
counter++;
}
file.Close();
}
では、後でonclick関数で使用するために、リンクラベル内にフルパスを文字列として保存するにはどうすればよいですか?
よろしくお願いします
ジム