如何在ListBox中转到下一行?

时间:2019-03-05 21:16:21

标签: c# winforms

嗨,我想在我的listBox中加载文件路径。 一切都好 我只是有一个问题,当我关闭应用程序然后再次打开它时 加载的文件位于一个通道中,它将它们识别为listBox中的一项 我尝试使用“ \ n”,“ \ r”这些都不是... 那么你们的建议是什么? (我将用户更改保存在“应用设置”中,以供日后阅读)

private void Form1_Load(object sender, EventArgs e)
{

    if (Properties.Settings.Default.FileList != string.Empty)
    {
        fileListBox.Items.Add(Properties.Settings.Default.FileList);
    }
    UnlockForm f2 = new UnlockForm();

    if (Properties.Settings.Default.PasswordCheck == true)
        f2.ShowDialog();
    else
        return;
}

private void button1_Click_1(object sender, EventArgs e)
{
    op = new OpenFileDialog();
    op.Title = "Select your stuff";
    op.Filter = "All files (*.*)|*.*";

    if (op.ShowDialog() == DialogResult.OK)
    {
        fileName = op.FileName;
        fileListBox.Items.Add(fileName);
    }

    Properties.Settings.Default.FileList += fileName+"\n";
    Properties.Settings.Default.Save();
}

2 个答案:

答案 0 :(得分:1)

在设置设计器中创建属性时:

  • 将名称设置为任意名称,例如Files
  • 将类型设置为System.Collections.Specialized.StringCollection
  • 将范围设置为User
  • 如果要使用一些默认值,请在Value单元格中使用 ... 来编辑默认值。

然后,您可以轻松地将其设置为DataSource中的ListBox

listBox1.DataSource = Properties.Settings.Default.Files;

还可以添加一些值:

Properties.Settings.Default.Files.Add("something");
Properties.Settings.Default.Save();

如果您向Files添加了一些内容,如果希望ListBox显示更改,请将DataSource设置为null,然后再次设置为Files

答案 1 :(得分:0)

似乎您已在“应用程序设置”中将FileList定义为String。有两种方法可以解决此问题。

a)使用FileList作为集合。

您可以在“应用程序设置”中将“文件列表的类型”更改为StringCollection。然后,您可以按以下步骤将项目添加到列表中

reviver

b)使用FileList作为字符串。

如果您确实想将Properties.Settings.Default.FileList保留为字符串,则需要在运行时使用分隔符将其拆分(假设为';')

const whitelist = ['prop1', 'prop2', 'result'];
const reviver = (key, value) => {

  if (key === '' || whitelist.includes(key)) {
    return value;
  } else {
    return undefined; // explicitly delete the entry
  }
};

const theMightyJsonString = '{ "result": { "prop1": "Greetings", "prop2": "Hello", "prop3": "WASSUP!!!!" } }';

console.log(JSON.parse(theMightyJsonString))
console.log(JSON.parse(theMightyJsonString, reviver))

在您的情况下,除非您在OP的范围之外有使用字符串的特殊原因,否则收集可能是更好的方法。