1

現在、次のコードを使用して、DataGridViewの3番目の列にデータを入力しています。

 Bitmap img = new   
 Bitmap(@"C:\Project\Images\Image1.jpg");
 DataGridView [2, 0].Value = img;           //2,0 is 1st row, 3rd column

 Bitmap img2 = new   
 Bitmap(@"C:\Project\Images\Image2.jpg");
 DataGridView [2, 1].Value = img2;           //2,1 is 2nd row, 3rd column

3番目の列には画像が正しく入力されていますが、このコードはさらに26回複製されています。簡単にするために、配列を作成したり、画像をデータベースに直接挿入したりするなど、これを行うためのより簡単な方法であるかどうかを知りたいだけです。これが初心者の質問である場合は、C#に比較的慣れていないため、お詫び申し上げます。

ありがとう!

4

4 に答える 4

2

Directory.GetFiles(path);ディレクトリ内のすべてのファイルの配列を提供するものを使用することをお勧めします。これを使用すると、ファイルの名前がimage1、image2、.であるかどうかを気にする必要はありません。

string path = @"C:\Project\Images\";
            string[] arr =  Directory.GetFiles(path);
            for (int i = 0 ; i < arr.Length ; i++)
            {
                Bitmap img = new Bitmap(Path.Combine(path , arr[i]));
                DataGridView [2, i].Value = img;
            }
于 2012-11-19T05:15:35.200 に答える
1

何かのようなもの:

int numberOfImages = 10; // Replace 10 with number of your images
for(int i=0; i<numberOfImages; i++)
{
   using(Bitmap img = new Bitmap(string.Format(@"C:\Project\Images\Image{0}.jpg", i+1)))
   {
       DataGridView [2, i].Value = img;
   }    
}
于 2012-11-19T05:14:26.217 に答える
0

ループ/反復の概念を学ぶ必要があります。およびのような反復ステートメントに関する記事を確認してください。forforeach

 for (int i = 0; i < 26; i++)
 {
     DataGridView [i, 1].Value = 
        new Bitmap(String.Format(@"C:\Project\Images\Image{0}.jpg", i));
 }
于 2012-11-19T05:15:54.343 に答える
0

これを試して

ASPX Gridview コード

<asp:GridView ID="grdImages" runat="server" BorderStyle="None" GridLines="None"
        ShowHeader="false" AutoGenerateColumns="False" Width="240">
        <Columns>
            <asp:ImageField DataImageUrlField="FileName"></asp:ImageField>
        </Columns>
</asp:GridView>

csコード

 protected void Page_Load(object sender, EventArgs e)
    {
        string path = HttpContext.Current.Request.PhysicalApplicationPath + @"\Images\Temple";
        // string path = @"D:\Blog\ImageShow\Images"; // This statement also valid

        string[] extensions = { "*.jpg", "*.png", "*.bmp" };

        List<string> files = new List<string>();
        foreach (string filter in extensions)
        {
            files.AddRange(System.IO.Directory.GetFiles(path, filter));
        }

        IList<ImageFileInfo> imageFileList = new List<ImageFileInfo>();
        foreach (string strFileName in files)
        {
            // Change the Absolute path to relative path of File Name and add to the List
            imageFileList.Add(new ImageFileInfo { FileName = ResolveUrl(strFileName.Replace(Server.MapPath("/"), "~/")) });
        }
        grdImages.DataSource = imageFileList;
        grdImages.DataBind();
    }
于 2012-11-19T05:21:38.577 に答える