列表框加载项然后保存所选项

时间:2015-07-27 00:08:32

标签: c#

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

代码

文件外观文件夹

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));
        }

这样显示我想要的东西但是当我按下保存时它只保存文件夹的名称而这个

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

image of what i want it to be like but to save the path instead of the folder name

保存按钮

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

有没有人知道我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

不是在每个File name项中保留File pathListbox,而是可以在其中加object,然后使用DisplayMember和{{1 } ValueMember的属性。

在这种情况下,您需要为所有ListBox定义一个简单类,并为每个项创建一个实例。在以下示例中,此类为Listbox items

在MyType.cs文件中:

MyType

在主要课程中:

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); } } 的{​​{1}}和Text属性一起使用。选择项目时,您可以编写如下代码:

SelectedValue