全て
| カテゴリ未分類
| ゲーム制作関連
| C# VB
| お勧めのお酒
| 江戸川乱歩賞
| ミステリ
| 感動・泣ける本
| いろいろ
| お勧めソフト
| サスペンス・ホラー
| 人生・人間ドラマ
| 素人釣り
| 愉快な話
| ファンタジー・SF
| その他
| PCいろいろ
| ファーストクイーン
| 発毛日記
| ファーストクイン攻略2022
| ガーデニング
テーマ:徒然日記(23578)
カテゴリ:C# VB
今回の目的
1.CSVファイルをDataGridViewに読み込む 2.その際DataGridViewを動的に追加する 3.その際DataGridViewはタブコントロールの新しいタブに設置する 4.そのためにタブコントロールに新しいタブを動的に追加する 5.選択中のタブをDataGridViewごと削除する 以上です。 下のようにタブにDataGridViewコントロールが作られて、CSVファイルが読み込まれます。 準備するもの。 適当なCSVファイル(今回は1行目にヘッダー、データは2行目以降) フォームにタブコントコールを1個(名前はtabMainとします) そしてボタンを2個(こっちはbutton1とbutton2) ボタン1で読み込み、2で削除します。 //--------------ここから----------------------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string fileName = ""; //OpenFileDialogクラスのインスタンスを作成 OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "CSVファイル(*.csv)|*.csv"; ofd.Title = "CSVファイルを選択してください"; ofd.RestoreDirectory = true; //ダイアログを表示する if (ofd.ShowDialog() == DialogResult.OK) { fileName = ofd.FileName; } else { Console.WriteLine("キャンセルされた。"); return; } //ページ名に連番をつける設定 string title = "TabPage " + (this.tabMain.TabCount + 1).ToString(); TabPage myTabPage = new TabPage(title);//myTabPageという名前でページを作ります this.tabMain.TabPages.Add(myTabPage);//新しいページをTabMainに追加 //次にデータグリッドをMyDataGridViewという名前で作ります DataGridView myDataGridView = new System.Windows.Forms.DataGridView(); myTabPage.Controls.Add(myDataGridView);//作ったグリッドを新タブページに加えます myDataGridView.Location = new Point(0, 0);//場所と大きさを設定 myDataGridView.Dock = DockStyle.Fill; try { // csvファイルを開く using (var sr = new System.IO.StreamReader(@fileName, Encoding.GetEncoding("Shift_JIS"))) { //ヘッダー部分の処理(一番上の行のデータを分割し、必要な列を追加) var line = sr.ReadLine();// ファイルから一行読み込む string[] values = line.Split(',');//カンマで分割 foreach(var n in values) { myDataGridView.Columns.Add(n,n); } //データ部分の処理 while (!sr.EndOfStream) { line = sr.ReadLine(); values = line.Split(','); myDataGridView.Rows.Add(values); } } } catch (System.Exception m) { // エラー表示 Console.WriteLine(m.Message); } } private void button2_Click(object sender, EventArgs e) { //タブを閉じる (データグリッドのメモリが解放されるのかは不明) if (this.tabMain.SelectedIndex > -1) { //心配だったら、下でタブ内のコントロールを全て削除してみるとか? // foreach (Control item in this.tabMain.SelectedTab.Controls) // { // item.Dispose(); // } this.tabMain.SelectedTab.Controls.Clear(); this.tabMain.SelectedTab.Dispose(); //←追加 } } } } //--------------ここまで-----------------------------------------今回はタブを追加してそこにデータグリッドビューを追加しました。 メモリのことがよくわからないので、タブを閉じたときにデータグリッドも一緒に消えてくれるのかはわかりません。大きなデータを扱う場合は注意したいです。 お気に入りの記事を「いいね!」で応援しよう
Last updated
Jan 4, 2023 07:11:12 PM
コメント(0) | コメントを書く
[C# VB] カテゴリの最新記事
|