2016-06-22 7 views
-1

DataGridViewの各行がDataGridViewRowとして手動で構築されるため、非常に遅いリストベースのアプリケーションがあります。パフォーマンスの問題を解決するために、代わりにDataSource(DataTable)を使用することに決めました。DataGridView DataSource //アイコンの整数

私の問題:私は私のデータベースからrecievingい

1つの列は画像IDで満たされています。アプリケーションはどの画像がどのIDに属しているかを知っています。手動でグリッドを作成する場合、intをビットマップに変換して、ビットマップをimagecolumnの値として使用する際に問題はありませんでした。代わりにDatatableを使用する代わりに、私はそれを働かせることができません。テストのために私は以下のクラスを書いた:

Public Class test 
Dim img As Bitmap 

Public Sub New(image As Bitmap) 
    InitializeComponent() 
    Me.img = image 
End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim dt As New DataTable 
    dt.Columns.Add("StrCol") 
    dt.Columns.Add("ImgCol") 
    Dim row As DataRow = dt.NewRow 
    row.Item(0) = "Ohne Bild" 
    row.Item(1) = 0 
    Dim row2 As DataRow = dt.NewRow 
    row2.Item(0) = "Mit Bild" 
    row2.Item(1) = 1 
    dt.Rows.Add(row) 
    dt.Rows.Add(row2) 
    DataGridView1.DataSource = dt 
End Sub 

Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting 
    If e.ColumnIndex = 1 Then 
     If e.Value = 0 Then 
      e.Value = Nothing 
     Else 
      e.Value = img 
     End If 
    End If 
End Sub 
End Class 

ヒント:

  • "OHNEビルトは" "画像なし" に変換
  • "ミットビルトは"
"画像付き" に変換

Button1_Click()後の出力 Output after Button1_Click()

ため、私は私の質問を明確にしようとmissunderstandingに210

EDIT

リストベースでは、実際にはリストオブジェクトを意味しません。私の悪いところです。リストベースでは、彼が作ったユーザーのデータベースエントリーを表示するアプリケーションを意味します。私のアプリケーションの非常に基本的なものは簡単です:ユーザーがデータグリッドビューで行を追加、編集、削除することを許可します。この情報はデータベースに保存され、編集されます。行内のこれらの情報の一部(正確には2列)はアイコンとして表示され、アプリケーションはアイコンのIDをデータベースに単に保存しました。したがって、アプリケーションはどのIDがどのアイコンに属しているかを知っています。

問題のサンプルdtはちょうど何かを持つことです。このアプリケーションでは、データベースからデータテーブルにデータが転送されます。

+0

イメージIDはイメージ自体は翻訳されません。実際の画像はどこに保存されていますか? – Plutonix

+0

@Plutonix私はCellFormattingイベントを面白くするために上書きしようとしませんでした:-)イメージ/アイコンは、コンストラクタで定義されているインスタンスメンバに表示されています。 – Luke

答えて

0

私はついにそれを自分で解決しました。

  1. データベースからデータテーブルを取得します。
  2. その後、私はその後、私は削除したDataTableの各行を次にIループデータ型のビットマップ
  3. でそれに列を追加し、画像自体にimage_idは列を翻訳し、新しい列
  4. に画像を置きますimage_idは列
  5. は、それから私は、私は多くの複雑なので、私は、コードをここに表示することはできませんで、私のメインのアプリケーションでそのコードを作成したデータソース

として新しいデータテーブルを使用します。すみません、ご協力いただきありがとうございます。

gridViewが表示されているものを変更しなければならないとすぐに、テーブルをソースとして使用する前に行う必要があるすべての変更を行うことが重要です。

関連する問題