私の問題は解決しませんでしたが、似たような1つの質問を調べて見つけました。他の質問は、実行時にdatagridview-is-blank-after-changing-datasource-at-runtimeでした。
これは、さらに単純な答えを持つ単純な質問だと確信しています。最初のWindowsフォームアプリケーションで作業し、ASP.Netとは大きく異なるものを見つけました:)
したがって、このアプリケーションには次のものがあります。
- メインフォーム
- このフォームのツールバーは、アプリケーション設定を設定するための2番目のフォームを開きます
- この2番目のフォームには、さまざまなテキストボックス/チェックボックス/コンボリスト/ボタンを備えたタブコントロール(2つのタブ)があります。
- これらはすべて完全に機能します。
- この2番目のフォームの2番目のタブに、さらに多くのテキストボックスなどとともに、DataGridViewを追加しました。printerListGridと呼ばれます
このフォームのコードビューで、(プリンターの)リストをそれにバインドしようとしています
printerListGrid.DataSource = AppContext.printers.printerList
アプリを実行してフォーム/タブに移動すると、DataGridViewが空白になります。
私も試しました:
printerListGrid.Columns.Clear()
printerListGrid.AutoGenerateColumns = True
printerListGrid.DataSource = AppContext.printers.printerList
繰り返しますが、空白です。
デバッグ中に、printerListに2つprinter
のオブジェクトが含まれていることがわかります。プロパティの内容を表示すると、これらがprinterListGridに設定されていることもわかり.DataSource
ます。それでも、DataGridViewはまだ空白です。
グリッドを再レンダリングする方法があるはずだと思いますか?
コード開示のために; これはにあるものですList(Of Printer)
Public Structure Printer
Public id As Integer
Public name As String
Public material As Enums.Materials
Public outputFolder As String
End Structure
ヘルプを提供する必要があるコード/説明が他にある場合はお知らせください。
アップデート:
言及するのを忘れました。フォームのLoadイベントで呼び出されるをDataSource
に設定しようとしていますPrivate Sub
MyBase.Load
更新#2
私はこれを動かし続け、それを機能させようとしています-私はコントロールとその目的を完全に誤解しているかもしれません..とにかく、私は次のことも試しました:
printerListGrid.AutoGenerateColumns = False
Dim col As DataGridViewColumn = New DataGridViewTextBoxColumn()
col.DataPropertyName = "name"
col.HeaderText = "Name"
printerListGrid.Columns.Add(col)
col = New DataGridViewTextBoxColumn()
col.DataPropertyName = "material"
col.HeaderText = "Material"
printerListGrid.Columns.Add(col)
col = New DataGridViewTextBoxColumn()
col.DataPropertyName = "outputFolder"
col.HeaderText = "Output Folder"
printerListGrid.Columns.Add(col)
printerListGrid.DataSource = AppContext.printers.printerList
これにより、少なくともグリッドに行が表示されます。List(Of Printer)
2のように表示されますが、 ...からのデータは入力されていません。