2012-01-16 39 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。顺便说一句:我宣布所有我的变量公共静态。任何人都可以帮忙吗?

编辑

它是一个Windows窗体应用程序,这两个窗口不会在同一时间存在。也许有人可以给我一个提示,如何使用不同的方法来存储这些变量?我知道我唯一能做的就是使用MySQL数据库存储变量,但没有多大意义。

我会试着澄清一下:我想要做的是将方法Foo中的xy传递给另一种方法。我不能使用全局变量,因为从文件中读取变量需要一个方法。

+0

你在哪里宣布x和y?为什么不把'string []行声明为public static? – 2012-01-16 15:39:25

+0

会设置X和Y作为视图状态帮助?或者你的线阵列保存在视图状态 – Andres 2012-01-16 15:39:27

+0

嗯,我不知道如何开始回答你的问题。你所做的一切都是错误的,但它很难向你解释... – Zruty 2012-01-16 15:40:10

回答

0

使用性质=>设置保存您的值,如果你需要它的下一次。 它很简单,并帮助你避免一些问题

+0

好吧,在CodeProject上找到一个教程,并且帮了我很多!谢谢! – 2012-01-16 16:32:04

0

两种形式是否同时存在?即在Skype你有你的主要Skype窗口和聊天窗口?

如果是这样,只需创建一个CameraUpdated事件,将事件发送给任何订阅者,那么您可以将主窗口绑定到任何新的子窗口事件,以便通知它。

为此,您需要创建一个自定义事件arg来传递数据,事件名称和参数的委托,并在您的表单上显示实际事件。

但是,如果一次只存在一种表单,您可以在内存中存储数据,然后将其读出(与您当前的实现非常相似),或者从一种表单切换到另一种表单时你传入已经改变的数据。

最终我会尽量避免将全局样式数据放在文件,内存或全局程序变量中,并选择一些松散耦合的方法,但不知道您的实际实现难以为特定解决方案提供建议。被声明为public static

+0

这两种形式可能同时存在,但相机流关闭。这些设置在流重新打开时应用(变量应该保存fps值等)。如果可以给我看写/读变量的另一种方式,我会是gratefull – 2012-01-16 15:59:37

0

类成员与访问:

ClassName.MemberName 
相关问题