2016-10-26 64 views
0

我一直在尋找我的問題的答案,但我嘗試過的所有代碼都不適合我,因此我決定尋求幫助。 我是在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

+0

請分享列表框中的內容的一些細節,以及如何/你」到目前爲止已完成。一個二維圖有Point(x,y),另一個值是什麼? – Searching

+0

RichTextBox?你試過的郵政編碼。 – LarsTech

+0

「我嘗試過的所有代碼都不適用於我」那麼,您嘗試了哪些代碼,哪些方法無效?以下是添加單點的簡單示例。 https://msdn.microsoft.com/en-us/library/dd456769.aspx – topshot

回答

0

--update --- 更換這一部分在下面

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,它應該就足夠了,具有給定的描述。

更換點位在上面的代碼與該

'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)

+0

對不起,有richtextbox而不是列表框的原因是我將所有列表框更改爲richtextboxes,以測試它是否會像這樣工作。我已經在我從另一個表單填充的列表框中有數字。從技術上講,X軸將是點的數量,Y將是值(列表框中的數字) – Fred

+0

您發送的代碼工作得很好,但我需要從Listbox1中讀取這些數字 – Fred

+0

「ListBox」獲取數據的位置從?這個「表格」可以訪問它嗎?用'Listbox'引用來更新問題,這會有所幫助。 – Searching

0

這是修改後的窗口2

公共類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 

末級

+0

您應該始終將您的代碼更新置於問題中。從來沒有在答案。 – Searching