【问题标题】:Name of field or property being initialized in an object initializer must start with在对象初始化程序中初始化的字段或属性的名称必须以
【发布时间】:2013-11-13 07:45:54
【问题描述】:

我正在尝试制作彩色玻璃窗。我选择在每个要绘制的矩形和线条上添加 8 种颜色。将随机选择颜色以填充每个模拟的矩形/线条。

Dim cbColorsInit As New List(Of Color) With {Color.Red, Color.Green, Color.Blue, Color.Yellow, Color.Black, Color.White, Color.Cyan, Color.Magenta}

Dim cbControls As New List(Of CheckBox)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

    addRed(CheckBox1)
    addGreen(CheckBox2)
    addBlue(CheckBox3)
    addYellow(CheckBox4)
    addBlack(CheckBox5)
    addWhite(CheckBox6)
    addCyan(CheckBox7)
    addMagenta(CheckBox8)
End Sub

Private Sub addRed(ByVal cb As CheckBox)
    cbControls.Add(cb)

    cbControls(cbControls.Count - 1).Tag = cbControls.Count - 1
End Sub
Private Sub addGreen(ByVal cb As CheckBox)
    cbControls.Add(cb)

    cbControls(cbControls.Count - 1).Tag = cbControls.Count - 1
End Sub
Private Sub addBlue(ByVal cb As CheckBox)
    cbControls.Add(cb)

    cbControls(cbControls.Count - 1).Tag = cbControls.Count - 1
End Sub
Private Sub addYellow(ByVal cb As CheckBox)
    cbControls.Add(cb)

    cbControls(cbControls.Count - 1).Tag = cbControls.Count - 1
End Sub
Private Sub addBlack(ByVal cb As CheckBox)
    cbControls.Add(cb)

    cbControls(cbControls.Count - 1).Tag = cbControls.Count - 1
End Sub
Private Sub addWhite(ByVal cb As CheckBox)
    cbControls.Add(cb)

    cbControls(cbControls.Count - 1).Tag = cbControls.Count - 1
End Sub
Private Sub addCyan(ByVal cb As CheckBox)
    cbControls.Add(cb)

    cbControls(cbControls.Count - 1).Tag = cbControls.Count - 1
End Sub
Private Sub addMagenta(ByVal cb As CheckBox)
    cbControls.Add(cb)

    cbControls(cbControls.Count - 1).Tag = cbControls.Count - 1
End Sub

Dim ran As New Random
Private Function GetRandomColor() As Color

    Dim chkd As List(Of CheckBox) = cbControls.Where(Function(c) c.Checked).ToList
    Dim rv As Color
    If chkd.Count > 0 Then
        Dim rndnum As Integer = ran.Next(chkd(rndnum).Tag)
        rv = cbColorsInit()
    Else
        Stop
    End If
    Return rv
End Function

这就是我在上面的图片中编码的方式,希望我就我的问题提供了足够的信息。我真的不明白为什么我总是收到错误。

【问题讨论】:

    标签: arrays vb.net winforms combobox


    【解决方案1】:

    相当混乱...试试这个:

    Dim ran As New Random
    Dim cbControls As New List(Of CheckBox)
    
    Dim cbColorsInit As New List(Of Color)(New Color() {Color.Red, Color.Green, Color.Blue, Color.Yellow, Color.Black, Color.White, Color.Cyan, Color.Magenta})
    
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        addCB(CheckBox1)
        addCB(CheckBox2)
        addCB(CheckBox3)
        addCB(CheckBox4)
        addCB(CheckBox5)
        addCB(CheckBox6)
        addCB(CheckBox7)
        addCB(CheckBox8)
    End Sub
    
    Private Sub addCB(ByVal cb As CheckBox)
        cbControls.Add(cb)
        cb.Tag = cbControls.Count - 1
    End Sub
    
    Private Function GetRandomColor() As Color
        Dim chkd As List(Of CheckBox) = cbControls.Where(Function(c) c.Checked).ToList
        Dim rv As Color
        If chkd.Count > 0 Then
            Dim rndnum As Integer = ran.Next(chkd.Count)
            rv = cbColorsInit(chkd(rndnum).Tag)
        Else
            Stop
        End If
        Return rv
    End Function
    

    【讨论】:

    • 我似乎又收到两个错误“预期表达式”,另一个错误“逗号,')',或预期的有效表达式延续”对这些有什么帮助吗?
    • 第 4 行(预期表达式)和第 6 行(逗号,')',或预期有效的表达式延续)
    • 您一定丢失了一个下划线“_”或允许它跨越多行的东西。我把它改成了一条长线,看看有没有帮助。
    【解决方案2】:

    您似乎错误地初始化了您的List(Of Color)。试试这个:

    Dim cbColorsInit As New List(Of Color) From {
        Color.Red, 
        Color.Green, 
        Color.Blue, 
        Color.Yellow, 
        Color.Black, 
        Color.White, 
        Color.Cyan, 
        Color.Magenta
    }
    

    看看here 了解更多信息。

    【讨论】:

    • 我似乎遇到了另一个错误“语法错误”、“预期语句结束”和预期声明错误。
    • 所以你从我那里删除了答案,因为你无法解决??
    • 没有难受的感觉,但我想我应该标记那个工作的人,如果你感动了,我会感到抱歉。
    • 完全没有感觉,但给出的两个答案都是正确的,除了行继续。编程本质上会导致许多需要纠正的错误,如果这是具有挑战性的,那么更糟糕的事情会来!
    猜你喜欢
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2016-01-12
    相关资源
    最近更新 更多