Задать вопрос
@Zewkin
Я у мамы фронтэндер

Как получить доступ к выбранным файлам из обработчика кнопки?

Привет,

никогда не писал ничего на C#, но вот пришлось.
Суть - есть две кнопки. По клику на одну выбираем несколько файлов, по клику на вторую - что-то с ними делаем.

Вот выбор файлов -

private void selectFile_Click_1(object sender, EventArgs e)
        {
            Stream myStream = null;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "Файлы персонализации УПЦ (*.e)|*.e";
            openFileDialog1.FilterIndex = 1;
            openFileDialog1.Multiselect = true;
            openFileDialog1.RestoreDirectory = true;
            openFileDialog1.Title = "Выберите файлы персонализации УПЦ";

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                flowLayoutPanel1.Controls.Clear();
                flowLayoutPanel2.Controls.Clear();
                int i = 0;
                int totalCards = 0;
                Label[] labels = new Label[openFileDialog1.FileNames.Length];
                Label[] cards = new Label[openFileDialog1.FileNames.Length];
                
                foreach (String file in openFileDialog1.FileNames)
                {
                    try
                    {
                        labels[i] = new Label() { Text = Path.GetFileNameWithoutExtension(file), AutoSize = true };
                        labels[i].Click += new System.EventHandler(lbsi_Click);
                        cards[i] = new Label() { Text = (File.ReadLines(file).Count()-2).ToString() + " " + GetDeclension((File.ReadLines(file).Count() - 2), "карта", "карты", "карт"), AutoSize = true };
                        flowLayoutPanel1.Controls.Add(labels[i]);
                        flowLayoutPanel2.Controls.Add(cards[i]);
                        totalCards = totalCards + (File.ReadLines(file).Count() - 2);
                        ++i;
                        button1.Enabled = true;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                toolStripStatusLabel1.Text = openFileDialog1.FileNames.Length.ToString() + " " + GetDeclension((openFileDialog1.FileNames.Length), "файл", "файла", "файлов") + ", " + totalCards.ToString() + " " + GetDeclension(totalCards, "карта", "карты", "карт");
                statusStrip1.Refresh();
            }
        }


Нужно что-нибудь делать с этими файлами не сразу после их выбора, а по нажатию на кнопку "конвертировать". Первая мысль была - замкнуть openFileDialog1.FileNames, чтобы дернуть его из обработчика, но как-то объявить переменную вне метода не вышло.

Наверняка тут все очень просто, кто подскажет? Спасибо.
  • Вопрос задан
  • 118 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
Вполне все просто. Объявите глобальные переменные и пользуйтесь. У вас переменные будут, скорее всего, в классе формы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы