列表框加载项目,然后保存所选项目的文件路径

本文关键字:项目 选项 路径 文件 保存 然后 加载 加载项 列表 | 更新日期: 2023-09-27 18:05:02

好的,我在这里编写了一些代码它会列出所有目录我想要做的是显示文件夹名称但是当选中并按下保存键时它会保存文件路径而不仅仅是名称

代码

文件查看文件夹

FolderBrowserDialog elfenliedtopfan5wins = new FolderBrowserDialog();
       // elfenliedtopfan5wins.RootFolder = Environment.SpecialFolder.ProgramFiles;
        if (elfenliedtopfan5wins.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            // test 1 
            // Example #1: Write an array of strings to a file. 
            // Create a string array that consists of three lines. //raw = 0  ''raw''images = 1 ''raw''weapons = 2 ''raw''weapons = 3 ''raw''xmodel = 4 ''raw''xmodelparts = 5 ''raw''xmodelsurfs = 6
            string[] lines = { elfenliedtopfan5wins.SelectedPath + "''raw" };
            // and then closes the file.
            System.IO.File.WriteAllLines(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "''elfenlied_weapons''path.txt", lines);
            string rawsave = elfenliedtopfan5wins.SelectedPath;
            Properties.Settings.Default.rawpath = rawsave;
            Properties.Settings.Default.Save();
            listbox();
            copyfilealais();

public void listbox()
    {
        LOADMOD.Items.Clear();
        string[] getfiles = Directory.GetFiles(Properties.Settings.Default.rawpath + "''mods");
        string[] dirs = Directory.GetDirectories(Properties.Settings.Default.rawpath + "''mods");
        foreach(string file in getfiles)
        {
            LOADMOD.Items.Add(file);
        }
        foreach (string dir in dirs)
        {
            LOADMOD.Items.Add(dir);
        }
    }

这种方式可以工作文件,但我不想在列表框中显示路径。我只想知道我添加的文件夹的名称。

foreach(string file in getfiles)
        {
            LOADMOD.Items.Add(path.getfilename(file));
        }
        foreach (string dir in dirs)
        {
            LOADMOD.Items.Add(path.getfilename(dir));
        }

是这样的这就是我想要的但是当我点击保存时它只会保存文件夹的名称也就是这个

所以我的措辞是他们的一种方式让它像这张图一样显示所有文件夹名称,但当我按下保存时,它保存文件路径而不仅仅是名称?

图像是我想要的样子但是保存路径而不是文件夹名称

保存按钮

private void buttonX7_Click(object sender, EventArgs e)
    {
        Properties.Settings.Default.modpath = LOADMOD.SelectedItem.ToString();
        // testing to see if it saves file path
        MessageBox.Show(Properties.Settings.Default.modpath);
        richTextBoxEx1.LoadFile(Properties.Settings.Default.modpath + "//mod.csv", RichTextBoxStreamType.PlainText);
    }

,我仍然希望它保存路径,但只有当我不包含path时它才会这样做。getfilename

有人知道我怎样才能做到这一点吗?

列表框加载项目,然后保存所选项目的文件路径

在每个Listbox项中保留File nameFile path,您可以在其中保留object,然后使用ListBoxDisplayMemberValueMember属性。

在这个场景中,您只需要为所有Listbox items定义一个简单的类,并为每个项目创建一个实例。在下面的示例中,该类是MyType

在MyType.cs文件中:

public class MyType
{
    public string Name {get; set;}
    public string Path {get; set;}
}

在你的主类中:

public void listbox()
{
    LOADMOD.Items.Clear();
    string[] getfiles = Directory.GetFiles(Properties.Settings.Default.rawpath + "''mods");
    string[] dirs = Directory.GetDirectories(Properties.Settings.Default.rawpath + "''mods");
    LOADMOD.DisplayMember = "Name";
    LOADMOD.ValueMember = "Path";
    foreach(string file in getfiles)
    {
        // Create an item for the list
        var thisItem = new MyType {
            Name = path.getfilename(file),
            Path = file
            }; 
        LOADMOD.Items.Add(thisItem);
    }
    foreach (string dir in dirs)
    {
        // Create an item for the list
        var thisItem = new MyType {
            Name = path.getfilename(dir),
            Path = dir
            }; 
        LOADMOD.Items.Add(thisItem);
    }
}

现在您可以使用ListBoxTextSelectedValue属性。当您选择一个项目时,您可以编写如下代码:

string MyName = LOADMOD.Text; 
string MyPath = LOADMOD.SelectedValue;
// Now You have both Name and Path of your file or directory here
MessageBox.Show(MyName);
MessageBox.Show(MyPath);