2015-10-07 4 views
1

Как получить переменную «SafeFileNames» из другого метода? В кнопке 1 У меня есть OpenFileDialog и в кнопке 2 я хочу получить все имена файлов.Как получить переменную «SafeFileNames» из другого метода?

Я использую цикл:

foreach (string fileName in openFileDialog1.SafeFileNames) 

и в общественной форме частичной класса у меня есть:
public string[] fileName { get; private set; }

, но он не работает. Я мог бы создать новый массив и заполнить первый метод, но я ищу еще одно лучшее решение.

КОД:

У меня есть что-то вроде этого:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    public string[] fileName { get; private set; } 
    int numberOfFiles { get; set; } 

    public void button1_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

     openFileDialog1.CheckFileExists = true; 
     openFileDialog1.CheckPathExists = true; 

     openFileDialog1.DefaultExt = "txt"; 
     openFileDialog1.Filter = "Text files (*.txt)|*.txt"; 
     openFileDialog1.FilterIndex = 2; 

     openFileDialog1.RestoreDirectory = true; 
     openFileDialog1.ReadOnlyChecked = true; 
     openFileDialog1.ShowReadOnly = false; 
     openFileDialog1.Multiselect = true; 
     textBox1.Text = ""; 
     if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      int number = 0; 
      foreach (string fileName in openFileDialog1.SafeFileNames) 
      { 
      } 
     } 
     } 
    public void button2_Click(object sender, EventArgs e) 
    { 
    HERE - I want to know string from openFileDialog1.SafeFileNames 
    } 

Теперь string[] fileName является нулевым.

+0

Вы хотите получить имена файлов в одной папке? Почему вы не используете OpenFolderDialog? –

+0

'openFileDialog1.Multiselect = true;' определенные файлы не вся папка – test

ответ

1

Если вы вызываете второй метод из первого метода, вы можете просто передать массив строк ко второму методу. Кроме того, вы можете использовать частное поле в своем классе для ссылки на массив и использовать его во втором методе.

Edit: Вы можете изменить свой код следующим образом:

public Form1() 
{ 
    InitializeComponent(); 
} 
public string[] fileNames { get; private set; } 
int numberOfFiles { get; set; } 

public void button1_Click(object sender, EventArgs e) 
{ 
    //Your openFileDialog1 initialisation and other stuff here 
    if (openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     fileNames = openFileDialog1.SafeFileNames; 
     numberOfFiles = fileName.Length; 
    } 
} 
public void button2_Click(object sender, EventArgs e) 
{ 
    foreach (string fileName in fileNames) 
    { 
     //You can access the name of each file using fileName now 
    } 
} 

Я думаю, что у вас возникли какие-то неурядицы с переменной повторяется для цикла Еогеасп. Эта переменная существует только внутри цикла, и ей присваивается новое значение для каждой итерации.

+0

проверить мой ответ – test

+0

Я отредактировал свой ответ. Отвечает ли он на ваш вопрос сейчас? Кроме того, пожалуйста, удалите свой ответ и добавьте его в вопрос, поскольку он является частью вопроса. –

Смежные вопросы