2

vb.net 2010 で Windows フォームを設計しています。これは、2 つのコントロールを持つ単純なものです。1 つはデータを表形式で表示する datagridview で、もう 1 つは gridview からデータを取得してチャートを描画するチャート コントロールです。また、テーブルまたはチャートを作成したい変数を選択するのに役立つコンボボックスもあります。さらに、2 つのボタンがあり、1 つは「テーブル」というラベルの付いたもので、これをクリックすると、グリッドビューに外部 Excel ファイルからのデータが取り込まれます。「プロット」というラベルの付いた別のボタンは、グリッドビューにインポートされたデータをプロットします。

コンボ ボックスに「実質 GDP」、消費、投資の 3 つの変数があるとします。実行時に変数を初めて選択すると、正常に動作しますが、同じ実行中に別の変数を選択すると、gridview は変数をインポートできますが、プロットはグラフの描画に失敗します。グリッドビューで2番目の変数のテーブルを持っている間、最初の変数をまだ探しているため、プロットは変数を見つけることができません。最初の変数が表示された後に別の変数を選択すると、グリッドビューとプロットの間に切断があるようです。

実行を閉じて再構築し、別の変数を選択すると、正常に動作します。しかし、その実行中に別の変数を選択すると、失敗します。これが私のコードです:

Public Class Form1
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter

Dim myStr1, myStr2, myStr3 As String
Dim msgStr, msgEnd, defValStr, defValEnd, _
   title, myValStr, myValEnd As String

Public Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    myStr1 = selectVariable.SelectedItem
    MsgBox("You have chosen " & myStr1)
    ' Defining a InputBox to enter Sample Period
    ' Start Period
    msgStr = "Enter your Starting time period: Between 1980 and 2012"
    defValStr = "1982"
    title = "Define Sample Time Period"
    myValStr = InputBox(msgStr, title, defValStr)
    ' End Period
    msgEnd = "Enter your Ending time period: Between 1980 and 2012"
    defValEnd = "2012"
    title = "Define Sample Time Period"
    myValEnd = InputBox(msgEnd, title, defValEnd)
    Select Case myStr1
        Case "Real GDP"
            myStr2 = "xgdp"
        Case "Consumption"
            myStr2 = "CP"
        Case "Investment"
            myStr2 = "IP"
    End Select

    myStr3 = String.Concat("select", " ", "FY", ",", myStr2, " ", "from", " ", "[Dataset$]", " ", "where", " ", "FY>=", myValStr, " ", "and", " ", "FY<=", myValEnd)
    MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='J:\Rushad\MOF\EViews Stuff\Data_Macro_Model.xls';Extended Properties=Excel 8.0;")
    MyCommand = New System.Data.OleDb.OleDbDataAdapter(myStr3, MyConnection)
    MyCommand.TableMappings.Add("Table", "Net-informations.com")
    DtSet = New System.Data.DataSet
    MyCommand.Fill(DtSet)
    DataGridView1.DataSource = DtSet.Tables(0)
    MyConnection.Close()
End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Chart1.DataSource = DtSet
    Chart1.Series.Add(myStr2)
    Chart1.Series(myStr2).XValueMember = "FY"
    Chart1.Series(myStr2).YValueMembers = myStr2
End Sub

End Class
4

1 に答える 1

0

データ ソースを BindingSource にバインドし、Binding ソースをデータグリッドにバインドしてみてください。

BindingSourceExample.DataSource = DataToBind
DataGridView.DataSource = BindingSourceExample

少なくともこれは私がそれを行う方法です!

于 2013-10-17T23:10:10.480 に答える