0

コードで作成された別のタブのデータ グリッド ビューを参照しようとしています。

現在選択されているタブにあるデータ グリッド ビューの列をコンボ ボックスに入力したいと考えています。現在、タブが選択されているのではなく、ユーザーが最後にロードしたファイルをコンボボックスに入力することしかできません。

Dim mstrFirstFile As String = ""
Dim mstrFileName As String = ""
Dim mdstTableInput As New DataSet
Dim mintCounter As Integer
Dim mdgvTab As DataGridView

Public Function CreateNewDGVInsideNewPageTab() As DataGridView
    Dim tbpNewTab As New TabPage()
    tbpNewTab.Text = mstrFileName

    Dim mdgvTabControl As New DataGridView
    mdgvTabControl.Dock = DockStyle.Fill
    mdgvTabControl.Name = ("Grid" + ToString(mintCounter))

    tbpNewTab.Controls.Add(mdgvTabControl)
    tbcsource.TabPages.Add(tbpNewTab)
    tbcsource.SelectedTab = tbpNewTab
    Return mdgvTabControl
End Function

Private Sub generate()

    Dim objCLSConverter As New DataTier.clsCSVConverter
    Dim strNewXMLPath As String = ""
    Dim xmlFile As XmlReader

    If mstrFirstFile.Length > 1 Then


        strNewXMLPath = objCLSConverter.writeXML(mstrFirstFile)

        xmlFile = XmlReader.Create(strNewXMLPath, New XmlReaderSettings())

        Dim dsTemp As DataSet = New DataSet
        Dim dtTable As DataTable = Nothing

        dsTemp.ReadXml(xmlFile)
        dtTable = dsTemp.Tables(0).Copy
        dtTable.TableName = mintCounter
        mdstTableInput.Tables.Add(dtTable)

        mdgvTab = CreateNewDGVInsideNewPageTab()

        mdgvTab.DataSource = mdstTableInput.Tables(mintCounter)

        mintCounter = (mintCounter + 1)

        cbxColumnsUpdate()

        xmlFile.Close()

    End If
End Sub

何か助けがあれば、または私のコードがもっと必要な場合はお知らせください。


このプログラムは、ユーザーが追加した .csv または .xls ファイルを取得し、データセットに投げ込みます。これらのファイルを、ファイルが読み込まれたデータ グリッド ビューを内部に持つ新しいコード生成タブに追加します。

タブを選択すると、そのタブのデータ グリッド ビューのすべての列名がコンボ ボックスに入力されます。任意のタブを選択すると、そのタブのコンボ ボックスが再入力されます。次に、コンボ ボックスから列名を選択し、その列で検索する w/e をテキスト ボックスに入力します。これは単に select where 句です。

このデータは、ユーザーが表示して Excel にエクスポートしたり、変更を続けたりできるように、下のデータ グリッド ビューに放り込まれます。これはすべて、一般的なレポート目的とデータのマッサージのためです。

現在の問題は、選択したタブに基づいてコンボ ボックスが再設定されないことです。

4

1 に答える 1

0

ただのオプション-これを変換します:

Dim mdgvTab As DataGridView

辞書へ:

Dim mdgvTabDictionary As Dictionary(Of Integer, DataGridView)

次に、内部でSub generate()これを置き換えます。

mdgvTab = CreateNewDGVInsideNewPageTab()

これに:

Dim mdgvTab As DataGridView = CreateNewDGVInsideNewPageTab()
mdgvTabDictionary.Add(mintCounter, mdgvTab)

これで、コントロール階層を処理したり、名前でコントロールを検索したりする必要がなくなりました。DataGridView代わりに、インデックスで必要なものを見つけることができますmdgvTabDictionary(index)

、(または状況に応じて他の場所)でmdgvTabDictionary初期化することを忘れないでください:Sub NewForm_Load

mdgvTabDictionary = New Dictionary(Of Integer, DataGridView)
于 2013-02-26T19:52:08.860 に答える