0

DataTable にバインドされたフォームで DataGridView を表示しようとしていますが、表示されません。私は C1TrueDBGrid を使用してこれを行っていましたが、それは機能していました... TrueDBGrid のいくつかの複雑さのため、DataGridView の使用に切り替えることにしました。何も表示されない理由を理解するのを手伝ってくれる人はいますか?

フォームで私はこれらを宣言します:

Public binData As DataSet
Friend WithEvents dgvData As System.Windows.Forms.DataGridView

binData には、別の計算ルーチンで作成されたテーブルが格納されます。次に、これはフォーム ロード イベントです。

    'create a tab page and add data grid view for every table in the set
    For i = 0 To binData.Tables.Count - 1
        Dim tabPage As C1.Win.C1Command.C1DockingTabPage = New C1.Win.C1Command.C1DockingTabPage
        tabPage.Text = binData.Tables(i).TableName
        tabContent.TabPages.Add(tabPage)

        Dim dgvData = New System.Windows.Forms.DataGridView
        Dim binding As New BindingSource
        binding.DataSource = binData.Tables(i)

        With dgvData
            .Dock = DockStyle.Fill
            .AllowUserToOrderColumns = False
            .AllowUserToAddRows = False
            .AllowUserToDeleteRows = False
            .DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomLeft
            .DataSource = binding
            .AutoGenerateColumns = True
        End With
        tabPage.Controls.Add(dgvData)
    Next   'DataTable In binData.Tables

フォームが読み込まれると、タブ ページが表示され、期待どおりにラベル付けされますが、空 (テーブルなし) に見えます。

代わりに、DataSource を (特定のテーブルではなく) binData と呼ばれる DataSet に設定してから、dgvData の DataMember プロパティを表示したい特定のテーブルの名前に設定してみましたが、違いはありませんでした。

注: フォームが特定のデータセットで読み込まれるまで必要なグリッドの正確な数がわからないため、ビジュアル デザイナーを使用するのではなく、実行時にこれをプログラムで実行できるようにする必要があります。フォームが取得するデータセットの数は異なる可能性があります。ユーザーが望むものに応じたテーブルの。

4

2 に答える 2

0

OK、まあ、私がしていたことに何の問題もなかったことがわかりました。この問題は、DGV のデータソースのバインドなどとは関係のない 1 行のコードにあることが判明しました。

ComponentOne には、フォームとその中のコントロールのテーマを設定できる ThemeController と呼ばれるコントロールがあります。dgvData のテーマをデフォルトのアプリケーション テーマ (視覚的なスタイルと、色、フォントなどに関する詳細を設定する) に設定するコード行がありました。なんらかの理由で、それが私のグリッドを非表示にしていました。私は彼らと一緒にチケットを記録します。

于 2015-05-05T13:14:10.030 に答える