début du processus de deux chaînes
-
28-10-2019 - |
Question
Je suis en train d'ouvrir un fichier qu'un utilisateur peut définir. En d'autres termes, il ne sera jamais un chemin de jeu ou d'un fichier. Ainsi, lorsque l'utilisateur a sélectionné le fichier qu'ils veulent ouvrir ce bouton ci-dessous va ouvrir. Je l'ai déclaré et p1 comme l1 chaînes publiques.
public void button4_Click(object sender, EventArgs e)
{
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
l1 = Path.GetFileName(openFileDialog1.FileName);
p1 = System.IO.Path.GetDirectoryName(openFileDialog1.FileName);
}
public void button2_Click(object sender, EventArgs e)
{
//p1 = directory path for example "C:\\documents and settings\documents"
//l1 = filename
Process.Start(p1+l1);
}
Il suffit donc de passer en revue, je veux ouvrir le fichier juste en utilisant le chemin du répertoire et nom de fichier. Est-ce possible? Je peux juste avoir là p1 et il va ouvrir un explorateur me montrant ce répertoire. Merci pour la recherche.
La solution
Oui, il fonctionnera, mais je vous recommande de mettre à jour votre code ceci:
var path = Path.Combine(p1, l1);
Process.Start(path);
Autres conseils
Vous ne devriez pas utiliser la concaténation de chaîne pour combiner un répertoire et nom de fichier. Dans votre cas, la chaîne résultante ressemblera à ceci:
C:\documents and settings\documentsfilename
^^
this is wrong
string path = Path.Combine(p1, l1);
Process.Start(path);
Pourquoi ne pas vous faire simplement ceci: -
public void button4_Click(object sender, EventArgs e)
{
string fileNameWithPath;
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
fileNameWithPath = openFileDialog1.FileName;
}
}
public void button2_Click(object sender, EventArgs e)
{
Process.Start(fileNameWithPath);
}