好的,我在这里做了一些代码 这将列出所有目录,我想要做的是显示文件夹名称,但是当选择并按下保存时,它会保存文件路径而不仅仅是名称
代码
文件外观文件夹
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
有没有人知道我怎么能这样做?
答案 0 :(得分:1)
不是在每个File name
项中保留File path
或Listbox
,而是可以在其中加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