0

データ グリッド ビューをセットアップし、それをデータにリンクして、アダプターを入力しました。すべて問題なく動作しています。私がやりたいことは、データ グリッド ビューの先頭に列を追加し、現在の最初の列のファイル名を持つ最初の列に画像を追加し、2 番目の列として終了することです。

列を追加して既に画像用に設定しており、値が設定されていない場合はデフォルトの画像も設定しています。column2 にあるものを読み取る方法を見つけてから、ファイル名 (命名スキームに一致するように少し編集したもの) で画像を column1 にロードする方法を理解するのに問題があります。グリッド ビュー、datasettableadapter、またはその他の場所に対してこれを行う必要があるかどうかはわかりません。行を繰り返しスローしてcell2を読み取り、次にcell1の画像をロードしようとしましたが、currentrowを設定できません。

CellFormating で奇妙な出力が得られたため、CellPainting を使用することになりました。以下は私が使用するコードです。Cells[0] は、画像を入れたいセルです。Cells[1] は、ファイル名として使用する画像の名前です。

    private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    {
        string monsterName = "";

        try
        {
            if (this.dataGridView1.Columns[e.ColumnIndex].Name == "monsterNameDataGridViewTextBoxColumn")
            {
                if (e.Value != null && e.RowIndex > -1)
                {
                    monsterName = (string)this.dataGridView1.Rows[e.RowIndex].Cells[1].Value;
                    this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = new Bitmap(@"C:\Users\Chad\Pictures\Dark Summoner\C_" + monsterName + @".png");
                }
            }
        }

        catch (ArgumentException)
        {
           toolStripStatusLabel1.Text = monsterName + " image file does not exist.";
        }

    }
4

1 に答える 1

0

これはいくつかの方法で処理できます。

1) datagridview の CellFormatting イベントを処理し、そこにセルの画像を入力します。イベントには、フォーマットしようとしている現在の行/列にアクセスできるパラメーターがあります。したがって、セル 2 から画像ファイルを読み取り、それに基づいてセル 1 の画像をここに設定できます。

2) データソースに画像データを事前入力します。たとえば、dataadapter が DataTable を埋めている場合、データテーブルをロードした後に、データテーブルに画像をロード/移入することができます。

于 2012-08-14T23:04:15.327 に答える