I am a beginner in programming in general. My app has a button listing names of selected files on DGV. I added a row for file names on windows Forms Designer using DGV Tasks. The code is as follows:
{
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]);
}
}
}
After creating this button, I made a class to use as data source of this DGV(on windows Forms Design -> DGV tasks -> Choose data source -> Object -> Class I created) Then, I tried to open files to list their names using the button I mentioned above. And I get the following message: "Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound"
I can kinda understand why, and I want to fix this. Best option would be, I guess, to put ofd codes to Datasource class, but I have no idea how. I'm not even sure if it'd be right. If not, it'll be great if I get the right way to fix this problem.
Thanks in advance!
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; }
}
}