OS:windows
Microsoft Visual studio2019使用
言語 visual C#
同じform内で、簡単なリストを作成したのですが、
DateTimePickerとtextboxの内容を、buttomをクリックすると
datagridviewに反映させたり、削除させたりしたいです。
初心者で!説明が下手で申し訳ないのですが、宜しくお願いします。
追記:修正のご指摘ありがとうございます。
説明不足及び丸投げのようになってしまい申し訳ありません。行いたい処理は上記図で右側「期限」「やること」に入力した内容を、「登録」を押すとリストに取得、削除を押すとリスト内容の削除、できるようにしたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/05 02:41
2020/03/05 02:43
2020/03/05 04:05
2020/03/05 04:09
2020/03/05 04:48
2020/03/05 05:58
回答1件
0
ベストアンサー
Zuishinさんの手順にそってざっと作ってみました。
大体のところはデザイナでできます。書いた部分はForm1.csとToDoItem.csです。
cs:ToDoItem.cs
1using System; 2 3namespace Questions245208 4{ 5 public class ToDoItem 6 { 7 public bool Completed { get; set; } 8 public DateTime Deadline { get; set; } 9 public string Task { get; set; } 10 } 11}
cs:Form1.cs
1using System; 2using System.Collections.Generic; 3using System.IO; 4using System.Runtime.Serialization; 5using System.Windows.Forms; 6using System.Xml; 7 8namespace Questions245208 9{ 10 public partial class Form1 : Form 11 { 12 public Form1() 13 { 14 InitializeComponent(); 15 16 if(File.Exists("todo.xml")) 17 { 18 using(var fs = new FileStream("todo.xml", FileMode.Open)) 19 { 20 var serializer = new DataContractSerializer(typeof(List<ToDoItem>)); 21 toDoItemBindingSource.DataSource = serializer.ReadObject(fs); 22 } 23 } 24 } 25 26 private void Add_Click(object sender, EventArgs e) 27 { 28 var item = new ToDoItem 29 { 30 Task = textBox1.Text, 31 Deadline = dateTimePicker1.Value, 32 }; 33 toDoItemBindingSource.Add(item); 34 } 35 36 private void Delete_Click(object sender, EventArgs e) 37 { 38 //toDoBindingSource.RemoveCurrent(); 39 40 foreach(DataGridViewRow row in dataGridView1.SelectedRows) 41 { 42 if(!row.IsNewRow) 43 { 44 dataGridView1.Rows.Remove(row); 45 } 46 } 47 } 48 49 private void Save_Click(object sender, EventArgs e) 50 { 51 using(var xw = XmlWriter.Create("todo.xml", new XmlWriterSettings { Indent = true, })) 52 { 53 var serializer = new DataContractSerializer(typeof(List<ToDoItem>)); 54 serializer.WriteObject(xw, toDoItemBindingSource.List); 55 } 56 } 57 } 58}
cs:Form1.Designer.cs
1namespace Questions245208 2{ 3 partial class Form1 4 { 5 /// <summary> 6 /// 必要なデザイナー変数です。 7 /// </summary> 8 private System.ComponentModel.IContainer components = null; 9 10 /// <summary> 11 /// 使用中のリソースをすべてクリーンアップします。 12 /// </summary> 13 /// <param name="disposing">マネージド リソースを破棄する場合は true を指定し、その他の場合は false を指定します。</param> 14 protected override void Dispose(bool disposing) 15 { 16 if(disposing && (components != null)) 17 { 18 components.Dispose(); 19 } 20 base.Dispose(disposing); 21 } 22 23 #region Windows フォーム デザイナーで生成されたコード 24 25 /// <summary> 26 /// デザイナー サポートに必要なメソッドです。このメソッドの内容を 27 /// コード エディターで変更しないでください。 28 /// </summary> 29 private void InitializeComponent() 30 { 31 this.components = new System.ComponentModel.Container(); 32 this.dataGridView1 = new System.Windows.Forms.DataGridView(); 33 this.Add = new System.Windows.Forms.Button(); 34 this.Delete = new System.Windows.Forms.Button(); 35 this.Save = new System.Windows.Forms.Button(); 36 this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); 37 this.textBox1 = new System.Windows.Forms.TextBox(); 38 this.completedColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); 39 this.deadlineColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); 40 this.taskColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); 41 this.toDoItemBindingSource = new System.Windows.Forms.BindingSource(this.components); 42 ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 43 ((System.ComponentModel.ISupportInitialize)(this.toDoItemBindingSource)).BeginInit(); 44 this.SuspendLayout(); 45 // 46 // dataGridView1 47 // 48 this.dataGridView1.AutoGenerateColumns = false; 49 this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 50 this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { 51 this.completedColumn, 52 this.deadlineColumn, 53 this.taskColumn}); 54 this.dataGridView1.DataSource = this.toDoItemBindingSource; 55 this.dataGridView1.Location = new System.Drawing.Point(12, 34); 56 this.dataGridView1.Name = "dataGridView1"; 57 this.dataGridView1.RowTemplate.Height = 21; 58 this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; 59 this.dataGridView1.Size = new System.Drawing.Size(604, 404); 60 this.dataGridView1.TabIndex = 0; 61 // 62 // Add 63 // 64 this.Add.Location = new System.Drawing.Point(622, 352); 65 this.Add.Name = "Add"; 66 this.Add.Size = new System.Drawing.Size(80, 40); 67 this.Add.TabIndex = 1; 68 this.Add.Text = "登録"; 69 this.Add.UseVisualStyleBackColor = true; 70 this.Add.Click += new System.EventHandler(this.Add_Click); 71 // 72 // Delete 73 // 74 this.Delete.Location = new System.Drawing.Point(708, 352); 75 this.Delete.Name = "Delete"; 76 this.Delete.Size = new System.Drawing.Size(80, 40); 77 this.Delete.TabIndex = 2; 78 this.Delete.Text = "削除"; 79 this.Delete.UseVisualStyleBackColor = true; 80 this.Delete.Click += new System.EventHandler(this.Delete_Click); 81 // 82 // Save 83 // 84 this.Save.Location = new System.Drawing.Point(622, 398); 85 this.Save.Name = "Save"; 86 this.Save.Size = new System.Drawing.Size(166, 40); 87 this.Save.TabIndex = 3; 88 this.Save.Text = "保存"; 89 this.Save.UseVisualStyleBackColor = true; 90 this.Save.Click += new System.EventHandler(this.Save_Click); 91 // 92 // dateTimePicker1 93 // 94 this.dateTimePicker1.Location = new System.Drawing.Point(623, 62); 95 this.dateTimePicker1.Name = "dateTimePicker1"; 96 this.dateTimePicker1.Size = new System.Drawing.Size(166, 19); 97 this.dateTimePicker1.TabIndex = 4; 98 // 99 // textBox1 100 // 101 this.textBox1.Location = new System.Drawing.Point(624, 105); 102 this.textBox1.Name = "textBox1"; 103 this.textBox1.Size = new System.Drawing.Size(165, 19); 104 this.textBox1.TabIndex = 5; 105 // 106 // completedColumn 107 // 108 this.completedColumn.DataPropertyName = "Completed"; 109 this.completedColumn.HeaderText = "完了"; 110 this.completedColumn.Name = "completedColumn"; 111 this.completedColumn.Width = 50; 112 // 113 // deadlineColumn 114 // 115 this.deadlineColumn.DataPropertyName = "Deadline"; 116 this.deadlineColumn.HeaderText = "期限"; 117 this.deadlineColumn.Name = "deadlineColumn"; 118 // 119 // taskColumn 120 // 121 this.taskColumn.DataPropertyName = "Task"; 122 this.taskColumn.HeaderText = "やること"; 123 this.taskColumn.Name = "taskColumn"; 124 this.taskColumn.Width = 300; 125 // 126 // toDoItemBindingSource 127 // 128 this.toDoItemBindingSource.DataSource = typeof(Questions245208.ToDoItem); 129 // 130 // Form1 131 // 132 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 133 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 134 this.ClientSize = new System.Drawing.Size(800, 450); 135 this.Controls.Add(this.textBox1); 136 this.Controls.Add(this.dateTimePicker1); 137 this.Controls.Add(this.Save); 138 this.Controls.Add(this.Delete); 139 this.Controls.Add(this.Add); 140 this.Controls.Add(this.dataGridView1); 141 this.Name = "Form1"; 142 this.Text = "Form1"; 143 ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); 144 ((System.ComponentModel.ISupportInitialize)(this.toDoItemBindingSource)).EndInit(); 145 this.ResumeLayout(false); 146 this.PerformLayout(); 147 148 } 149 150 #endregion 151 152 private System.Windows.Forms.DataGridView dataGridView1; 153 private System.Windows.Forms.Button Add; 154 private System.Windows.Forms.Button Delete; 155 private System.Windows.Forms.Button Save; 156 private System.Windows.Forms.DateTimePicker dateTimePicker1; 157 private System.Windows.Forms.TextBox textBox1; 158 private System.Windows.Forms.BindingSource toDoItemBindingSource; 159 private System.Windows.Forms.DataGridViewCheckBoxColumn completedColumn; 160 private System.Windows.Forms.DataGridViewTextBoxColumn deadlineColumn; 161 private System.Windows.Forms.DataGridViewTextBoxColumn taskColumn; 162 } 163}
投稿2020/03/05 10:56
編集2023/07/21 08:37総合スコア9862
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。