2017-03-17 54 views
0

我正在从表单上的文本框中复制字符串值并将其保存在设置中。我在这里做的方式似乎有点长期。有没有办法使用字符串引用TextBox1.Text和My.Settings.Value1。如果是这样,我可以循环并不断更改字符串以指向不同的控件。看看我目前正在做的事情。如何使用Visual Basic对控件或设置进行读写操作

My.Settings.F1LabelCol0Save = F1LabelCol0.Text 
My.Settings.F1LabelCol1Save = F1LabelCol1.Text 
My.Settings.F1LabelCol2Save = F1LabelCol2.Text 
My.Settings.F1LabelCol3Save = F1LabelCol3.Text 
My.Settings.F1LabelCol4Save = F1LabelCol4.Text 
My.Settings.F1LabelCol5Save = F1LabelCol5.Text 
My.Settings.F1LabelCol6Save = F1LabelCol6.Text 
My.Settings.F1LabelCol7Save = F1LabelCol7.Text 
My.Settings.F1LabelCol8Save = F1LabelCol8.Text 
My.Settings.F1LabelCol9Save = F1LabelCol9.Text 
+0

如果我的回答能解决您的问题,请标明其按周期/支票受理标记在我的帖子左侧。这里有更多的信息:[**如何接受一个答案工作?**](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

回答

0

我做了一些更多的研究,这里是如何做到这一点。现在显然它需要有一些非常相似的命名才值得。

For i = 0 To 39 
     My.Settings("F1LabelCol" & i.ToString & "Save") = Me.Controls("F1LabelCol" & i.ToString).Text 
Next 
+0

我不能'不要立即开始工作是另一个盲目支持我的问题。 –

+0

'.Text'不应该是名称的一部分。 –

+0

谢谢你的权利。 –

0

您可以通过动态My.Settings.Item()Me.Controls.Item()同时访问设置和控制。

我提出了两种选择:

1)使用For loop固定数量范围:

For x = 0 To 9 
    My.Settings("F1LabelCol" & x & "Save") = Me.Controls("F1LabelCol" & x).Text 
Next 
  • 潜在上升空间:不下咽例外(见下面的例子)。

  • 缺点:添加新设置/控件时,必须更改上限(当前为9)。

2)使用用于动态号码范围的While loop

Dim x As Integer = 0 
While True 
    Try 
     My.Settings("F1LabelCol" & x & "Save") = Me.Controls("F1LabelCol" & x).Text 
    Catch 
     Exit While 'If an exception is thrown we've most likely hit the setting/control limit. 
    End Try 
End While 
  • 潜在上升空间:动态号码范围,不需要增加新的设置/控制时,改变任何东西。

  • 缺点: Swallows异常,即您不会知道何时抛出异常是由于另一个原因,而不是设置/控制不存在。


如果要动态加载数据,以及刚刚扭转了get/set操作:

Me.Controls("F1LabelCol" & x).Text = My.Settings("F1LabelCol" & x & "Save") 
相关问题