由于数据源的原因,无法在 DGV 上使用 OFD 列出文件名



一般来说,我是编程初学者。我的应用程序有一个按钮,列出DGV上选定文件的名称。我使用DGV任务在windows窗体设计器上添加了一行文件名。代码如下:

{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Word(*.docx)| *.docx|PPT(*.pptx)|*.pptx|PDF(*.pdf)|*.pdf|Alle Dateien(*.*)|*.*";
ofd.Multiselect = true;

if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string[] dateinamen = ofd.SafeFileNames;
for (int i = 0; i < ofd.FileNames.Count() - 1; i++)
{
dataGridView1.Rows.Add(dateinamen[i]);
}
}
} 

创建此按钮后,我创建了一个类用作此DGV的数据源(在windows窗体设计->DGV任务->选择数据源->对象->我创建的类(然后,我试着打开文件,用上面提到的按钮列出它们的名字。我收到以下信息:"当控件是数据绑定的"时,不能以编程方式将行添加到DataGridView的行集合;

我能理解为什么,我想解决这个问题。我想,最好的选择是将ofd代码放在Datasource类中,但我不知道该怎么做。我甚至不确定这是否正确。如果没有,如果我能找到正确的方法来解决这个问题,那就太好了。

提前感谢!

BindingList<Datei> dateienList = new BindingList<Datei>();
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog(); 
ofd.Filter = "Word(*.docx)| *.docx|PPT(*.pptx)|*.pptx|PDF(*.pdf)|*.pdf|Alle Dateien(*.*)|*.*";
ofd.Multiselect = true;
try
{
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
foreach (String path in ofd.FileNames) 
{                                      
Datei datei = new Datei();  
datei.filePath = path; 
datei.Dateiname = Path.GetFileName(path);
dateienList.Add(datei);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Fehler! Die Datei kann nicht gelesen werden: " + ex.Message);
}
}
public class Datei //class as Datasource
{                     // 
[DisplayName("Dateiname")] 
public string Dateiname { get; set; }

public string filePath { get; set; }



}
}

最新更新