保存表格并在重新开放时显示

时间:2011-07-27 11:00:14

标签: c# save

我创建了一个程序,我打开一个文件,然后,程序获取文件的第一行并将其放在DataGridView的第一个列中。对于第二列的每一行,用户都有3个可供选择的组合框值。

发布并打开可执行程序后,我必须从openFileDialog打开一个文件并选择组合框。 但是,当我关闭并重新打开时,文件既未打开也未选择组合框。我需要它们。

我需要保存的操作,以便下次打开程序时,选择组合框的值。

你有什么建议?

private void button1_Click(object sender, EventArgs e)
        {
            //  opens **BROWSE**

            openFileDialog1.Title = "select CSV for check ";

            string filename = "";
            DialogResult result = openFileDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                filename = openFileDialog1.FileName;

                textBox1.Text = filename;






                string line;
                // Read the file and display it line by line.

                //read the path from textbox
                System.IO.StreamReader file = new System.IO.StreamReader(textBox1.Text);

                stringforData = file.ReadLine();      
                while ((line = file.ReadLine()) != null)
                {
                    // puts values in array 
                    fileList.Add(line.Split(';'));
                }

                file.Close();



                this.ToDataGrid();
            }


     }



private void button2_Click(object sender, EventArgs e)
        {
            this.textBox2.Clear();
    //*************  PUTS COLUMN 2 TO A STRING[]  ************************
            string[] colB = new string[dataGridView1.Rows.Count];

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {

                colB[i] = Convert.ToString(dataGridView1.Rows[i].Cells[1].Value);
          }
 //*************************************************************************



 public void ToDataGrid()
        {
            string[] split = stringforData.Split(';');


            foreach (string item in split)
            {
                dataGridView1.Rows.Add(item);
            }
        }

2 个答案:

答案 0 :(得分:1)

您无法关闭程序,而是禁用它。这样你就不需要保存任何东西,它仍然存在,只是没有显示。

要执行此操作,请设置YourForm.Enabled = false;以隐藏它,并true显示它。

答案 1 :(得分:1)

您必须将设置保存在程序关闭时不会丢失的位置。一种简单的方法是将它们写入文件。对于 very 简单示例,您可以使用此代码来保存变量:

        List<string> variables = new List<string>();
        variables.Add(variable1);
        variables.Add(variable2);
        File.WriteAllLines("settings.txt", variables);

此代码在程序启动时再次加载它们。在尝试阅读之前一定要检查文件是否存在,因为它在第一次运行时不会出现。

        List<string> variables = File.ReadAllLines("settings.txt");
        string variable1 = variables[0];
        string variable2 = variables[1];

我不会在已发布的应用中单独使用此代码,它只是基础知识的一个示例。有很多潜在的问题。如果用户没有管理员权限,那么如果应用程序在某些文件夹(如Program Files)中运行,您将获得例外。如果在程序运行期间以某种方式更改当前目录,则保存到上面的相对路径可能不会每次都保存在同一位置,并且您需要确定要保存到的绝对路径。像这样的IO操作需要包含良好的错误检查和处理。

还有一些方法可以将变量保存到注册表中,但我不喜欢这样做。保存设置几乎是每个桌面应用程序都需要做的事情。我相信.NET不包含读/写ini文件的标准函数。你可以使用DLLImport的Win32函数,但这很难看。我写了自己的,我在我的所有应用程序中使用。