在c#中处理多个文件
本文关键字:文件 处理 | 更新日期: 2023-09-27 18:18:15
我面临一个特殊的问题。我有一个按钮,当点击时,会导致点击事件打开文件对话框选择文件。该文件的名称(SafeFileName)将在组合框中显示。然后读取该文件的前9行,并将它们存储为以下类型的结构体:
public struct DCM_INFO
{
public string FILE_NAME;
public string FILE_PATH;
public string VERSION;
public string NAME;
public string DATE;
public string BOX;
public string SERIAL_NUM;
public string SERIES;
public string POINT;
public string NOTE;
public string VARIANT;
}
前两个字符串是"SafeFileName"
和"FileName"
。这个结构体然后显示在ListView中。
现在我想做的是:在我打开第二个文件与完全相同的按钮单击事件后,我想添加第二个"SafeFileName"到组合框,并使其可见(显示在顶部),然后将数据保存在DCM_INFO结构中的文件与第一个不同的名称。在此之后,如果我选择不同的文件,而不是主动显示在组合框中,listview将从DCM_INFO结构体中更新足够的数据。我已经找出了组合框(显示活动文件)的部分,但如何正确地切换列表视图之间?
您可以覆盖结构体中的ToString方法,并将该结构体直接添加到组合框中。在ComboBox的selectionchangecomcommitted事件中,你可以提取项目(将其转换回结构体)并创建适当的listviewitem,然后将其添加到你的ListView(在清除ListViews Items集合后)
public struct DCM_INFO
{
public string FILE_NAME;
public string FILE_PATH;
public string VERSION;
public string NAME;
public string DATE;
public string BOX;
public string SERIAL_NUM;
public string SERIES;
public string POINT;
public string NOTE;
public string VARIANT;
public override string ToString()
{
return FILE_NAME;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.comboBox1.SelectedItem != null)
{
DCM_INFO item = (DCM_INFO)this.comboBox1.SelectedItem;
// Create ListViewItems and add them to ListView
}
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
DialogResult ret = ofd.ShowDialog();
if (ret == System.Windows.Forms.DialogResult.OK)
{
DCM_INFO tmp = new DCM_INFO();
// read file and fill struct
this.comboBox1.Items.Add(tmp);
}
}
}