我创建了一个程序,我打开一个文件,然后,程序获取文件的第一行并将其放在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);
}
}
答案 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函数,但这很难看。我写了自己的,我在我的所有应用程序中使用。