首页 > 解决方案 > 使用按钮单击为 DataGridView 添加多个附件

问题描述

我编写了这段代码,用于通过单击按钮向 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;

标签: c#datagridviewemail-attachments

解决方案


最后一行的断点(来自评论):嗯,这当然不能解决问题,但现在你知道它DataTable本身是错误的。现在使用断点向上执行代码。您可以将其设置DataTable dt = new DataTable();在行上并查看上面的行,当悬停在 上方时ofdialog,查看它在FileNames.

在此处输入图像描述

OpenFileDialog1.Multiselect = True您应该获得与您在OpenFileDialog.

下一个候选是filename断点 on 的数组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));
}

VB.NET:

Private Sub BtnOpenDxf_Click(sender As Object, e As EventArgs) Handles BtnOpenDxf.Click
    OpenFileDialogDXF.Title = "Choose your files"
    OpenFileDialogDXF.InitialDirectory = "C:\users\XXXXX\Documents\"
    OpenFileDialogDXF.Filter = "DXF Files|*.dxf"
    OpenFileDialogDXF.Multiselect = True

    If OpenFileDialogDXF.ShowDialog() = DialogResult.OK Then
        For ir = 0 To OpenFileDialogDXF.FileNames.Count - 1
            Call LoadDXF(OpenFileDialogDXF.FileNames(ir))
        Next
    End If

LoadDXF我处理每个文件的自定义子在哪里。

编辑:

考虑您的代码,如果OpenFileDialog得到多个结果,我要寻找问题的地方是这一行:

string[] filename = ofdialog.FileNames;

它可能需要一些转换,例如.ToArray().


推荐阅读