在Visual Basic 2010中从保存文件中分配值

时间:2011-10-11 02:48:01

标签: vb.net file-io

我的项目使用的是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)

我遇到了问题,因为我在面板或组框中有一些对象而我没有进入它们。

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

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

有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分: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);
}

}

基本上这个想法是通过使用字典使你更容易操作,而不是装箱和拆箱并检查控制孩子;它只是通过使用它的名称和实例将它们放在字典中。