我试图从txt文件中读取复选框名称。我不确定这是否可行,但我试过这个:
var myString = "<br> With sixty seconds’ worth of distance run, <br>Yours is the Earth and everything that’s in it, <br> And—which is more—you’ll be a Man, my son !</p>"
var myRegexp = /([\w’]+?)([\s—,]|<br>)/g
var match = myRegexp.exec(myString)
while (match != null) {
console.log(match[1])
match = myRegexp.exec(myString);
}
可悲的是它没有用,我得到错误&#34;标识符预期&#34;它强调了我之后的点。
答案 0 :(得分:1)
这里的基本问题是了解在编译时解决的问题与在运行时解决的问题。
复选框名称是标识符,必须在编译时解析。您在源代码中看到了一个很好的名称,如CheckBox1
,但是当程序实际运行时,您真正拥有的是一个引用,主要由一个数字组成,表示程序内存地址空间的偏移量。作为变量的CheckBox1
名称不再存在;只剩下对象引用。
另一方面,StartupPath
和文本文件的内容仅为字符串。它们不是标识符,直到程序运行时才会知道它们的值。
好消息是,在WinForms控件的情况下,变量名称将保留为Control对象中的数据,您可以搜索它。您只需要使用一个查看Control对象的方法,如下所示:
Dim language As String = My.Computer.FileSystem.ReadAllText(Path.Combine(Application.StartupPath, "\Settings\language.txt"))
Dim languageBox as CheckBox = DirectCast(Me.Controls(language), CheckBox)
或许这个:
Dim languageBox as CheckBox = Me.Controls.OfType(Of CheckBox)().FirstOrDefault(Function(box) box.Name = language)
或许您的复选框嵌套在GroupBox或Panel中。在这种情况下,您需要更改Me
以获取GroupBox,Panel或直接包含该复选框的其他容器控件的名称。
答案 1 :(得分:0)
表单中复选框的名称是什么?...
Dim _chkbxName$ = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Settings\language.txt")
For Each cnt As Control In Me.Controls
If TypeOf cnt Is CheckBox Then
If cnt.Name = _chkbxName Then
CType(cnt, CheckBox).Checked = True
Exit For
End If
End If
Next