Я получил форму и добавил кнопку ("add_source_button") для динамического создания новых кнопок на форме.Эти кнопки должны открывать FileDialogue.Пока это работает, окно для выбора файла отображается правильно.Мне нужно сохранить выбранные файлы в словаре «файлы», чтобы иметь доступ к значениям позже.Проблема в том, что словарь «файлы» всегда сбрасывается, когда я добавляю новый файл в словарь (возможно, потому что он вызывает форму, когда я нажимаю на кнопку выбора выбора файла).
Как у менячтобы адаптировать код для правильного хранения выбранных файлов в словаре «files»?
Пытался определить словарь файлов в отдельном классе, не работает
Form1
int counter = 0;
Dictionary<string, string> files = new Dictionary<string, string>();
utilitys Utility = new utilitys();
public Form1 ()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
datasource1_location = datasource1.Location;
datasource1.Click += delegate { show_file_selector(datasource1.Name); };
}
private void add_source_Click(object sender, EventArgs e)
{
counter++;
datasource1_location.X += 50 + datasource1.Width;
Utility.add_element_to_form(this, 50, 50, "datasource"+counter.ToString(), "blabla");
}
public void show_file_selector (string source)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "CSV-Files(*.csv)|*.csv";
if (fileDialog.ShowDialog()==DialogResult.OK)
{
files.Add(source, fileDialog.FileName);
}
}
Утилита:
public void add_element_to_form(Form form, Size size, Point location, String control_name, String text)
{
Form1 form1 = new Form1();
Button new_source = new Button();
new_source.Size = size;
new_source.Location = location;
new_source.Name = control_name;
new_source.Text = text;
new_source.Click += delegate { form1.show_file_selector(new_source.Name); };
form.Controls.Add(new_source);
}
Я использую Form form
, поскольку у меня есть разные формы, где мне нужно использовать этот метод.