vb.net for in 循环中出现错误。无法声明

vb.net There ia an error in for in loop. Can't declare it

提问人:xxxyauxxx 提问时间:11/16/2023 最后编辑:xxxyauxxx 更新时间:11/17/2023 访问量:64

问:

我不知道这是怎么回事,谁能帮忙?

“结核病没有宣布。由于其保护级别,它可能无法访问” “CB没有宣布。由于其保护级别,它可能无法访问”

 Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        set_state()
        set_field()
    End Sub
 Private Sub set_state()
  Dim textboxes As TextBox() = {txtEventID, txtLocation}
        Dim comboboxes As ComboBox() = {cboStatusFrom, cboStatusTo, cboPtype, cboItemCode, cboDateFrom, cboDateTo}

        For Each tb In textboxes
            tb.Text = String.Empty
        Next

        For Each cb In comboboxes
            cb.Items.Clear()
        Next
 End Sub

我是初学者,我不知道有什么问题。

vb.net

评论

0赞 Matt Evans 11/16/2023
请不要使用屏幕截图/图像抓取。以格式化文本形式发布代码。
3赞 jmcilhinney 11/16/2023
你有在项目属性吗?如果没有,我认为这样的代码将假定已经声明了循环控制变量。我怀疑在代码文件的顶部添加或将其转到项目属性中将解决此问题。如果不这样做,我认为您可能必须使用这种东西来实际声明语句中的变量:.另一种方法是在循环之前声明变量:。Option Infer OnOption Infer OnOnFor EachFor Each tb As TextBox In textboxesDim tb As TextBox
0赞 Amessihel 11/16/2023
要完成@jmcilhinney的答案:For Each的官方文档...接下来,“零件”部分
0赞 jmcilhinney 11/16/2023
请注意,最好是学习什么,而不是盲目地翻动它。默认情况下,如果它适合您,则必须明确完成。一些老师会指示将其转为转折,因为他们不希望学生依赖类型推断。这一切都很好,但同样的老师往往不坚持也使用,坚持前者而不坚持后者是,这太疯狂了。Option InferOnOnOffOffOption Strict OnOffOn

答:

0赞 Jon Roberts 11/17/2023 #1

您需要检查每个文本框(txtEventID 和 txtLocation)和所有组合框(cboStatusFrom、cboStatusTo、cboPtype、cboItemCode、cboDateFrom 和 cboDateTo)是否存在,并且可从代码中访问。

错误是 tb 和 cb 依次设置为这些变量中的每一个,并且其中一个或多个要么“未声明,要么由于其保护级别而无法访问

也许最初用这个替换你的代码:

   Dim textboxes As TextBox() = {New TextBox()}
   Dim comboboxes As ComboBox() = {New ComboBox()}

   For Each tb In textboxes
       tb.Text = String.Empty
   Next

   For Each cb In comboboxes
       cb.Items.Clear()
   Next

这应该运行(当然,这是没有用的)。因此,首先将新的 TextBox() 替换为 txtEventID,然后重试。如果可行,请添加 txtLocation。

其中一个应该会导致您的错误,该错误将显示您需要修复的内容(确保文本框不是“无”,并且是可访问的。如果在设计器中创建控件,请确保将“GenerateMember”设置为 true)

对组合框执行相同的操作。