2011-10-11 92 views
0

我的项目分配值是使用Visual Basic 2010年我有一个纯文本文件保存具有以下格式:从保存文件在Visual Basic 2010

num_TEC|1 
num_STR|0 
num_PER|0 
num_MEC|1 
num_KNO|1 
num_DEX|1 

我试图通过加载数据第一列作为对象名称,第二列作为值。我已经有一些成功与以下(跳过一些基本的IO线):

prop = FileReader.ReadLine().Split("|") 
tempvar = prop(0)  

If TypeName(Me.Controls(tempvar)) = "NumericUpDown" Then 
    Me.Controls(tempvar).Value = prop(1) 

我有这样的问题,因为我在面板或组框中一些对象和我没有达到放进去。

有没有办法只是严格引用一个变量的对象?我很乐意将第一列分配到道具(0),并且只是说

if TypeName(object(prop(0))) = "NumericUpDown" then 
    object(prop(0)).Value = prop(1) 

任何人都可以帮忙吗?

谢谢!

回答

1

我建议将您的控件ID添加到某种列表或字典中,该列表或字典中包含您定义的所有控件,并将其用作上面的示例。 该列表可以是您定义的类控件列表或简单字典

例如: 添加此字段。此处的字符串表示控件ID,对象表示

private readonly Dictionary<String,Control> dictControl = new Dictionary<String,Control>(); 

//添加参与您的过程的所有控件。确保它是唯一名称 如:

private void yourMethodAllControl() 
{ 
    this.dictControl.Add(yourControl.Name, yourControl); 
    ... add all your control and so on.... 
} 

//设置你的价值在这里

private void SetValues() 
{ 
    .....// get all lines from files.... 
foreach(String line in lines) 
{ 
    var query = from ctrl in this.dictControl 
       where ctrl.Key == line.Split(0) 
       select ctrl; 
    var singleCtrl = query.First(); 
    singleCtrl.Value = line.Split(1); 
} 

} 

基本的理念是让你更容易使用字典来操作,而不是装箱和拆箱和检查为控制孩子;它只是通过使用它的名称和实例将它们放入字典中。

+0

谢谢你的回应。这花了我一段时间,但我现在已经研究并实现了一本字典,并且看到它在这种情况下非常有用。 –