C# 通过单击按钮为DataGridView添加多个附件

C# 通过单击按钮为DataGridView添加多个附件,c#,datagridview,email-attachments,C#,Datagridview,Email Attachments,我编写了这段代码,用于通过单击按钮向datagridview添加多个附件,但我一次只能添加一个附件。单击“下一步”按钮不会添加多个附件,请提供解决方案 谢谢 这是我试过的代码 OpenFileDialog ofdialog = new OpenFileDialog(); ofdialog.Multiselect = true; DataTable dt = new DataTable(); dt.Columns.Add("Attac

我编写了这段代码,用于通过单击按钮向datagridview添加多个附件,但我一次只能添加一个附件。单击“下一步”按钮不会添加多个附件,请提供解决方案

谢谢

这是我试过的代码

       OpenFileDialog ofdialog = new OpenFileDialog();
        ofdialog.Multiselect = true;

        DataTable dt = new DataTable();
        dt.Columns.Add("Attachments");

        var res = ofdialog.ShowDialog();


           string[] filename = ofdialog.FileNames;
           string[] sfilename =  ofdialog.SafeFileNames;

           foreach (string fn in filename)
           {
               dt.Rows.Add(fn);
           }


            dataGridView1.DataSource = dt.DefaultView;
            dataGridView1.Columns["Attachments"].Width = 500;

注释最后一行的断点:当然,这并不能解决问题,但现在您知道DataTable本身是错误的。现在使用断点向上运行代码。您可以在DataTable dt=new DataTable上进行设置;行并查看上面的行,当鼠标悬停在ofdialog上方时,查看其文件名中的文件集合

使用OpenFileDialog1.Multiselect=True,您应该获得与在OpenFileDialog中选择的文件数相等的文件数

下一个候选文件是foreach上带有断点的文件名数组,用于检查此数组中的项目数

下面是我用于比较的代码:

C转换为:

OpenFileDialogDXF.Title = "Choose your files";
OpenFileDialogDXF.InitialDirectory = @"C:\users\XXXXX\Documents\";
OpenFileDialogDXF.Filter = "DXF Files|*.dxf";
OpenFileDialogDXF.Multiselect = true;

if (OpenFileDialogDXF.ShowDialog() == DialogResult.OK)
{
    for (var ir = 0; ir <= OpenFileDialogDXF.FileNames.Count - 1; ir++)
        LoadDXF(OpenFileDialogDXF.FileNames(ir));
}
其中LoadDXF是处理每个文件的“我的自定义”子文件

编辑:

考虑到您的代码,如果OpenFileDialog得到多个结果,我会在下面一行查找问题:

string[] filename = ofdialog.FileNames;

它可能需要一些转换,比如.ToArray。

代码似乎还可以,您可以在foreach行放置一个断点,然后查看,如果您得到的字符串.Count等于所选文件的数量吗?另外,您可以将断点放在最后一行,将鼠标光标悬停在dt上方,在上一行分配数据源,并使用缩放图标在DataSet Visualizer中显示整个DataTable。您好,谢谢您的回复,我在最后一行添加了一个断点,并从data Visualizer获得了数据,它一次只显示一行,这就是问题所在,我想保留那一行和另一行。我可以选择多个项目,效果很好,但我想逐个添加项目。谢谢
string[] filename = ofdialog.FileNames;