2012-01-16 3 views
0

Я пишу приложение для веб-камеры, и мне нужно писать и читать около 15 переменных. У меня две формы: главное окно и окно параметров. Когда я сохраняю свои варианты я сделать что-то вроде этого:Получить переменные из списка в другом методе?

string[] lines = {x , y, ..., z }; 

System.IO.File.WriteAllLines(@"config.cfg", lines); 

В моем главном окне я прочитал переменные с помощью функции StreamReader:

public void Foo() 
{ 

    List<string> lines = new List<string>(); 

    while (!reader.EndOfStream) 
    { 
     lines.Add(reader.ReadLine()); 

     reader.Close(); 
    } 

    x = Convert.ToInt32(lines[0]); 
    y = Covert.ToString(lines[1]); 
    // and so on... 
} 

Проблема заключается в том, я не знаю, как получить доступ к x и y другим способом. Btw: Я объявлял все мои переменные общедоступными. Кто-нибудь может помочь?

Редактировать

Это является Windows Forms приложение, два окна не существуют одновременно. Может быть, кто-то может дать мне подсказку, как хранить эти переменные с помощью другого метода? Единственное, что я знаю, что я могу сделать, это хранить вары, используя базу данных MySQL, но это не имеет большого смысла.

Я попробую уточнить: что я хотел бы сделать, это пройти x и y по методу Foo другому методу. Я не могу использовать глобальные переменные, потому что для чтения переменных из файла требуется метод.

+0

Где вы объявляете x и y? почему бы не объявить 'string [] lines' как public static? –

+0

будет устанавливать x и y в качестве помощи в представлении? или, может быть, ваш массив строк сохраняет в viewstate – Andres

+0

Ну, я не знаю, как начать отвечать на ваш вопрос. Вы делаете все это неправильно, но вам будет сложно объяснить вам ... – Zruty

ответ

0

свойств использования => настройки для сохранения значения, если вы будете нуждаться в следующий раз. Это просто и поможет вам избежать некоторых проблем

+0

Хорошо, нашел учебник по CodeProject и мне очень помог! Благодаря! –

0

Существуют ли обе формы одновременно? i.e в скайпе у вас есть главное окно скайпа и окна чата?

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

Для этого вам нужно будет создать настраиваемое событие arg для передачи данных, делегата для имени события и аргументов, и выставить фактическое событие в вашей форме.

Если, однако, существует только одна форма за один раз, вы можете либо иметь в памяти хранилище, в который вы вставляете данные, а затем читать его (как и текущую реализацию) или когда вы переходите от одной формы к другой вы передаете данные, которые изменились.

В конечном счете я постараюсь избежать данных глобального стиля, будь то в файле, памяти или глобальной программной переменной, и выбрать какой-либо слабосвязанный подход, но, не зная о вашей реальной реализации, сложно сообщить конкретное решение.

+0

Две формы могут существовать одновременно, но затем поток камеры выключен. Настройки применяются, когда поток снова включен (переменные должны содержать значения fps и т. Д.).Если бы я мог показать мне другой способ записи/чтения переменных, я был бы благодарен –

0

Члены класса, объявленные public static доступны с:

ClassName.MemberName 
Смежные вопросы