如何使用列表框值绘制折线图

how to draw line graph using listbox values

我一直在寻找问题的答案,但我尝试过的所有代码都不适合我,所以我决定寻求帮助。 我是 VB.net 制作图表的新手,我的老板想要结果(在昨天之前)所以我没有时间深入研究如何制作图表。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

Dim a As Double
Dim b As String
b = RichTextBox1.Text
a = Convert.ToDouble(b)
'Chart1.DataBindTable(b)
' Chart1.(RichTextBox1.Text)
'Chart1.Series("Series1").Points.DataBindY(RichTextBox1.Text)
'Convert.ToInt32(b, 0)
Chart1.DataSource = RichTextBox1.Text
'Chart1.Series("Series1").Points.DataBindY(RichTextBox1.Text)
'Chart1.Series("Series1").Points.AddY(b)

'Chart1.Series("Series1").YValueMembers = b
Me.Chart1.Series("Series1").Points.AddY(a)
'MsgBox(RichTextBox1.Text)
MsgBox(a)
'Me.Chart1.Series("Series1").Points.InsertY(b)

Me.Refresh()

End Sub

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

 End Sub

我想画一个折线图。 我有一个包含 10 个数字和一个按钮的列表框。我想根据这些数字制作折线图。
我也尝试使用 richtextbox 而不是列表框,但没有成功。 我想得到像附图这样的东西。

非常感谢您的帮助。 sample made in excel

--更新--- 在下面提供的代码的点区域中替换此部分

   Dim x2 As Integer = 0 ' Keep a track of index
   For Each i As Integer In ListBox1.Items
        ' create a Point with index as x and the actual value of list item as y
         s.Points.AddXY(Convert.toDouble(x2), Convert.toDouble(i))
         x2 = x2+1
   Next

图表应该是这样的

 Chart1.Series.Clear() 'Empty your chart of any previous values

 Chart1.Titles.Add("My Line chart") 'Add a Title

 Dim s As New Series 'Create a new series
 s.Name = "My Line" 'Series name

 s.ChartType = SeriesChartType.Line 'Chart type

 'Most important part, the points to plot
 'Points START
  s.Points.AddXY(1, 2)
  s.Points.AddXY(3, 4)
  s.Points.AddXY(5, 9)
 'Points END

 'Add the series to the Chart1 control
 Chart1.Series.Add(s)

我不确定您为什么要使用 RichTextBox1。如果您正在收集用户输入的 (x,y) 点,那么您将需要构建您的点。 使用 TextBox 控件而不是 RichText,根据给定的描述应该足够了。

将上面代码中的 Points 位替换为

'Assume the user is entering value/numbers separated by ","
'Use the input as both x and y
'e.g 1,2,3,...
Dim textCont As String = TextBox.Text
Dim boxValues As String() = textCont.Split(New Char() {","})
For Each item In boxValues
 s.Points.AddXY(Convert.toDouble(item), Convert.toDouble(item))
 s.Points.AddXY(Convert.toDouble(item), Convert.toDouble(item))
 s.Points.AddXY(Convert.toDouble(item), Convert.toDouble(item))
Next

就您提供的代码而言,本示例中没有 ListBox 控件或参考。

AddXY(Double,Double)

这是修改后的 form2

Public Class X_axis_chart

Private Sub X_axis_chart_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim a As Integer
    ListBox1.Items.Clear()
    For a = 0 To Main.ListBox2.Items.Count - 1 Step 1
        ListBox1.Items.Add(Main.ListBox2.Items.Item(a).ToString)
    Next
    'Chart1.Series("X axis").Points.DataBindY(ListBox1.Text)
    Chart1.Series("X axis").Points.AddXY("Text", ListBox1.Text)
End Sub

结束Class