C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: DataGrid Vewの使い方を教えてください。


(過去ログ 76 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■44923 / inTopicNo.1)  DataGrid Vewの使い方を教えてください。
  
□投稿者/ 裕猫 (62回)-(2009/12/23(Wed) 09:06:53)

分類:[C#] 

開発環境
 OS:WindowsXP SP3
 言語:VisualStudio2008Pro C#
いつもお世話になっています。今回Datagridvewを使いたいと思いまして調べたのですが、出てくるのはデータベースの指定をしてドラッグして自動で表示させるものばかりでした。その方法は使えるのですが、今回やりたいのは、プログラムの中で計算などをしてできた結果をDatagridvewに入れて表示したいのです。が、その方法がわかりません。
知りたいこと
1. Datagridvewの見出し?に住所 氏名 年齢などを表示させるやり方。
2. 静岡県 裕猫 123 というデータを登録し表示させたい。
の2点です。よろしくお願いいたします。
引用返信 編集キー/
■44925 / inTopicNo.2)  Re[1]: DataGrid Vewの使い方を教えてください。
□投稿者/ こあら (64回)-(2009/12/23(Wed) 11:04:59)
これで出来そうです。

Windows フォームのプログラミング
チュートリアル : バインドされていない Windows フォーム DataGridView コントロールの作成
http://msdn.microsoft.com/ja-jp/library/5s3ce6k8.aspx


ちなみに探し方は、ぐぐって、
http://www.google.co.jp/search?q=datagridview+%E3%83%90%E3%82%A4%E3%83%B3%E3%83%89

検索結果の2個目に出てきたMSDNに飛んで、
http://msdn.microsoft.com/ja-jp/library/fbk67b6z%28VS.80%29.aspx

左側のツリーを眺めて見つけました。

引用返信 編集キー/
■44930 / inTopicNo.3)  Re[2]: DataGrid Vewの使い方を教えてください。
□投稿者/ Hongliang (532回)-(2009/12/23(Wed) 12:41:43)
型付き DataSet を作るとか、BindingSource 越しに List<T> を使うとかすれば普通に DataSource として扱えると思います。
// List<T> を使う場合は、列ヘッダの名前を変更するのに、バインド後に DataGridViewColumn.HeaderText いじるなり、T のプロパティに DisplayName 属性付けるなりと言う手順がありますが。
引用返信 編集キー/
■44931 / inTopicNo.4)  Re[2]: DataGrid Vewの使い方を教えてください。
□投稿者/ 裕猫 (63回)-(2009/12/23(Wed) 12:51:49)
No44925 (こあら さん) に返信
> これで出来そうです。
>
> Windows フォームのプログラミング
> チュートリアル : バインドされていない Windows フォーム DataGridView コントロールの作成
> http://msdn.microsoft.com/ja-jp/library/5s3ce6k8.aspx
>
>
> ちなみに探し方は、ぐぐって、
> http://www.google.co.jp/search?q=datagridview+%E3%83%90%E3%82%A4%E3%83%B3%E3%83%89
>
> 検索結果の2個目に出てきたMSDNに飛んで、
> http://msdn.microsoft.com/ja-jp/library/fbk67b6z%28VS.80%29.aspx
>
> 左側のツリーを眺めて見つけました。
>
アドバイスありがとうございます。見たところ希望のものができそうです。調べてやってみます。できましたらまたご報告いたします。
引用返信 編集キー/
■44932 / inTopicNo.5)  Re[3]: DataGrid Vewの使い方を教えてください。
□投稿者/ 裕猫 (64回)-(2009/12/23(Wed) 12:55:30)
No44930 (Hongliang さん) に返信
> 型付き DataSet を作るとか、BindingSource 越しに List<T> を使うとかすれば普通に DataSource として扱えると思います。
> // List<T> を使う場合は、列ヘッダの名前を変更するのに、バインド後に DataGridViewColumn.HeaderText いじるなり、T のプロパティに DisplayName 属性付けるなりと言う手順がありますが。
アドバイスありがとうございます。こちらの方法ではまだ私には力不足のようです。が、とにかく調べて見ます。ありがとうございました。
引用返信 編集キー/
■44935 / inTopicNo.6)  Re[2]: DataGrid Vewの使い方を教えてください。
□投稿者/ 裕猫 (65回)-(2009/12/23(Wed) 15:10:36)
No44925 (こあら さん) に返信
教えていただいた所を参考に
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DtatGridVew
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            SetupDataGridView();
            PopulateDataGridView();
        }

        private void SetupDataGridView()
        {
            dataGridView1.ColumnCount = 5;

            dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Navy;
            dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;
            dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font(dataGridView1.Font, FontStyle.Bold);

            dataGridView1.Name = "songsDataGridView";
            dataGridView1.Location = new Point(8, 8);
            dataGridView1.Size = new Size(800, 300);
            dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
            dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
            dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.Single;
            dataGridView1.GridColor = Color.Black;
            dataGridView1.RowHeadersVisible = false;

            dataGridView1.Columns[0].Name = "Release Date";
            dataGridView1.Columns[1].Name = "Track";
            dataGridView1.Columns[2].Name = "Title";
            dataGridView1.Columns[3].Name = "Artist";
            dataGridView1.Columns[4].Name = "Album";
            dataGridView1.Columns[4].DefaultCellStyle.Font = new Font(dataGridView1.DefaultCellStyle.Font, FontStyle.Italic);

            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dataGridView1.MultiSelect = false;
            dataGridView1.Dock = DockStyle.Fill;

            dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting);
        }

        private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Release Date")
            {
                if (e != null)
                {
                    if (e.Value != null)
                    {
                        try
                        {
                            e.Value = DateTime.Parse(e.Value.ToString()).ToLongDateString();
                            e.FormattingApplied = true;
                        }
                        catch (FormatException)
                        {
                            MessageBox.Show(e.Value.ToString() + "is not a valid date.");
                        }
                    }
                }
            }
        }

        private void PopulateDataGridView()
        {

            string[] row0 = { "11/22/1968", "29", "Revolution 9", "Beatles", "The Beatles [White Album]" };
            string[] row1 = { "10/10/1960", "6", "Fools Rush In", "Frank Sinatra", "Nice 'N' Easy" };
            string[] row2 = { "11/11/1971", "1", "One of These Days", "Pink Floyd", "Meddle" };
            string[] row3 = { "2/3/1988", "7", "Where Is My Mind?", "Pixies", "Surfer Rosa" };
            string[] row4 = { "4/5/1981", "9", "Can't Find My Mind", "Cramps", "Psychedelic Jungle" };
            string[] row5 = { "6/10/2003", "13", "Scatterbrain. (As Dead As Leaves.)", "Radiohead", "Hail to the Thief" };
            string[] row6 = { "6/30/1992", "3", "Dress", "P J Harvey", "Dry" };

            dataGridView1.Columns[0].DisplayIndex = 3;
            dataGridView1.Columns[1].DisplayIndex = 4;
            dataGridView1.Columns[2].DisplayIndex = 0;
            dataGridView1.Columns[3].DisplayIndex = 1;
            dataGridView1.Columns[4].DisplayIndex = 2;

            dataGridView1.Rows.Add(row0);
            dataGridView1.Rows.Add(row1);
            dataGridView1.Rows.Add(row2);
            dataGridView1.Rows.Add(row3);
            dataGridView1.Rows.Add(row4);
            dataGridView1.Rows.Add(row5);
            dataGridView1.Rows.Add(row6);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
というようにいたしまして目的の動作をさせることができました。本当にありがとうございました。

解決済み
引用返信 編集キー/
■44940 / inTopicNo.7)  Re[3]: DataGrid Vewの使い方を教えてください。
□投稿者/ επιστημη (2340回)-(2009/12/23(Wed) 17:04:24)
επιστημη さんの Web サイト
↓ ちょっと楽。

       string[] rows = { 
              "11/22/1968|29|Revolution 9|Beatles|The Beatles [White Album]",
              "10/10/1960|6|Fools Rush In|Frank Sinatra|Nice 'N' Easy",
              "11/11/1971|1|One of These Days|Pink Floyd|Meddle",
              "2/3/1988|7|Where Is My Mind?|Pixies|Surfer Rosa",
              "4/5/1981|9|Can't Find My Mind|Cramps|Psychedelic Jungle",
              "6/10/2003|13|Scatterbrain. (As Dead As Leaves.)|Radiohead|Hail to the Thief",
              "6/30/1992|3|Dress|P J Harvey|Dry" 
       };
       int i = 0;
       Array.ForEach(new int[] { 3, 4, 0, 1, 2 },
                     (int inx) => { dataGridView1.Columns[i++].DisplayIndex = inx; });
       Array.ForEach(rows, 
                     (string x) => { dataGridView1.Rows.Add(x.Split('|')); });

解決済み
引用返信 編集キー/
■44950 / inTopicNo.8)  Re[4]: DataGrid Vewの使い方を教えてください。
□投稿者/ 裕猫 (68回)-(2009/12/24(Thu) 08:42:40)
No44940 (επιστημη さん) に返信
> ↓ ちょっと楽。
>
> string[] rows = {
> "11/22/1968|29|Revolution 9|Beatles|The Beatles [White Album]",
> "10/10/1960|6|Fools Rush In|Frank Sinatra|Nice 'N' Easy",
> "11/11/1971|1|One of These Days|Pink Floyd|Meddle",
> "2/3/1988|7|Where Is My Mind?|Pixies|Surfer Rosa",
> "4/5/1981|9|Can't Find My Mind|Cramps|Psychedelic Jungle",
> "6/10/2003|13|Scatterbrain. (As Dead As Leaves.)|Radiohead|Hail to the Thief",
> "6/30/1992|3|Dress|P J Harvey|Dry"
> };
> int i = 0;
> Array.ForEach(new int[] { 3, 4, 0, 1, 2 },
> (int inx) => { dataGridView1.Columns[i++].DisplayIndex = inx; });
> Array.ForEach(rows,
> (string x) => { dataGridView1.Rows.Add(x.Split('|')); });
>
なるほど ForEach とSplitの組み合わせですか。すっきりしますね。大変参考になりました。ありがとうございます。
引用返信 編集キー/
■44952 / inTopicNo.9)  Re[5]: DataGrid Vewの使い方を教えてください。
□投稿者/ 裕猫 (69回)-(2009/12/24(Thu) 08:43:16)
解決済みつけなおし
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -