VB.Net-整理一些代码

VB.Net-整理一些代码,vb.net,Vb.net,我有一个表格,上面有很多线型,基本上我想做的是,根据整数数组中的内容,将某些线条变成蓝色,其他线条变成黑色。每一行称为line1、line2等。因此,如果数组中的一个值为3,则line3将为蓝色 我有以下代码可以更轻松地处理所有行: MeterArray = New PowerPacks.LineShape() {line1, line2, line3, line4, line5} 然而,由于我将有大约50条独立的线,当我到达第50行时,这看起来会很混乱。所以我的问题是,有没有更整

我有一个表格,上面有很多线型,基本上我想做的是,根据整数数组中的内容,将某些线条变成蓝色,其他线条变成黑色。每一行称为line1、line2等。因此,如果数组中的一个值为3,则line3将为蓝色

我有以下代码可以更轻松地处理所有行:

      MeterArray = New PowerPacks.LineShape() {line1, line2, line3, line4, line5}
然而,由于我将有大约50条独立的线,当我到达第50行时,这看起来会很混乱。所以我的问题是,有没有更整洁的方法来处理这些线型


提前谢谢

如果您只是想让声明看起来好看,可以使用下划线字符继续下一行:

MeterArray = New PowerPacks.LineShape() {line1, line2, line3, line4, line5, _
                                         line6, line7, line8, line9, line10}
…你可以继续这样一直到50岁


这将需要10行代码,但我认为这比一行非常长的代码看起来要整洁一些。

如果您只是想让声明看起来漂亮,可以使用下划线字符继续下一行:

MeterArray = New PowerPacks.LineShape() {line1, line2, line3, line4, line5, _
                                         line6, line7, line8, line9, line10}
…你可以继续这样一直到50岁


这需要10行代码,但我认为这比一条很长的代码看起来要整洁一些。

我想这50行是一种颜色的阴影吧?这将由黑变白。它也将更容易保持为一个循环,比如说你现在想要150行

        Dim colours as new List(of PowerPacks.LineShape)
        Dim colourStep As Integer = 255 \ NumberOfSubLevels 

        For nextStep As Integer = 1 To NumberOfSubLevels 
            colours.Add(New PowerPacks.LineShape(colourStep * nextStep)
        Next

我想这50行是一种颜色的阴影吧?这将由黑变白。它也将更容易保持为一个循环,比如说你现在想要150行

        Dim colours as new List(of PowerPacks.LineShape)
        Dim colourStep As Integer = 255 \ NumberOfSubLevels 

        For nextStep As Integer = 1 To NumberOfSubLevels 
            colours.Add(New PowerPacks.LineShape(colourStep * nextStep)
        Next

<>而不是在表单设计器中手动添加行,请考虑以编程方式添加

Const N As Integer = 50

Dim _lines(N - 1) As LineShape
Dim _numbers(N - 1) As Integer

Private Sub frmLineShapes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: Fill the _numbers array with values.

    For i As Integer = 0 To N - 1
        _lines(i) = New LineShape With { _
           .X1 = 5 * i + 10, .Y1 = 20, _
           .X2 = 5 * i + 10, .Y2 = 60, _
           .BorderColor = DirectCast(IIf(_numbers(i) = 3, Color.Blue, Color.Black), Color) _
        }
    Next
    Me.SuspendLayout()
    Me.ShapeContainer1.Shapes.AddRange(_lines)
    Me.ResumeLayout()
End Sub
现在,您已经将这些行放在一个数组中,以后可以轻松地访问和更改它们

注:

Visual Basic Powerpack的形状不会直接添加到表单中;而是将它们添加到形状容器中。必须在forms designer for VB中将至少一个形状添加到表单中,才能将形状容器自动添加到表单中。如果没有,您仍然可以通过编程方式添加它

Me.SuspendLayout()
Dim ShapeContainer1 = New ShapeContainer
Me.Controls.Add(ShapeContainer1)
ShapeContainer1.Shapes.AddRange(_lines)
Me.ResumeLayout()
更新:

如果手动添加这些行,仍然可以通过其名称访问这些行

For i As Integer = 0 To N - 1
    Dim index As Integer = Me.ShapeContainer1.Shapes.IndexOfKey("LineShape" & (i + 1))
    Dim line As LineShape = DirectCast(Me.ShapeContainer1.Shapes(index), LineShape)
    If _numbers(i) = 3 Then
        line.BorderColor = Color.Blue
    Else
        line.BorderColor = Color.Black
    End If
Next

<>而不是在表单设计器中手动添加行,请考虑以编程方式添加

Const N As Integer = 50

Dim _lines(N - 1) As LineShape
Dim _numbers(N - 1) As Integer

Private Sub frmLineShapes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: Fill the _numbers array with values.

    For i As Integer = 0 To N - 1
        _lines(i) = New LineShape With { _
           .X1 = 5 * i + 10, .Y1 = 20, _
           .X2 = 5 * i + 10, .Y2 = 60, _
           .BorderColor = DirectCast(IIf(_numbers(i) = 3, Color.Blue, Color.Black), Color) _
        }
    Next
    Me.SuspendLayout()
    Me.ShapeContainer1.Shapes.AddRange(_lines)
    Me.ResumeLayout()
End Sub
现在,您已经将这些行放在一个数组中,以后可以轻松地访问和更改它们

注:

Visual Basic Powerpack的形状不会直接添加到表单中;而是将它们添加到形状容器中。必须在forms designer for VB中将至少一个形状添加到表单中,才能将形状容器自动添加到表单中。如果没有,您仍然可以通过编程方式添加它

Me.SuspendLayout()
Dim ShapeContainer1 = New ShapeContainer
Me.Controls.Add(ShapeContainer1)
ShapeContainer1.Shapes.AddRange(_lines)
Me.ResumeLayout()
更新:

如果手动添加这些行,仍然可以通过其名称访问这些行

For i As Integer = 0 To N - 1
    Dim index As Integer = Me.ShapeContainer1.Shapes.IndexOfKey("LineShape" & (i + 1))
    Dim line As LineShape = DirectCast(Me.ShapeContainer1.Shapes(index), LineShape)
    If _numbers(i) = 3 Then
        line.BorderColor = Color.Blue
    Else
        line.BorderColor = Color.Black
    End If
Next

我添加了一个示例,展示了如何通过名称访问这些行。我添加了一个示例,展示了如何通过名称访问这些行。