実現したいこと
クリック毎にDataGridViewに空の列が追加されないようにしたい。
前提
ここに質問の内容を詳しく書いてください。
VisualStudioでWindowsフォームアプリケーションでTodolistを作っています。
発生している問題・エラーメッセージ
DataGridView内をクリックすると空の列が追加されます。クリックする度に追加されます。
該当のソースコード
C#
public partial class TopForm : Form { SqlConnection conn = new SqlConnection(); SqlCommand cmd = new SqlCommand(); DataGridViewCheckBoxColumn chkDeleteDgvColumn = new DataGridViewCheckBoxColumn(); DataGridViewTextBoxColumn idDgvColumn = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn todoDgvColumn = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn datetimeDgvColumn = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn placeDgvColumn = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn whatDgvColumn = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn howmuchtimeDgvColumn = new DataGridViewTextBoxColumn(); DataGridViewButtonColumn btnUpdateDgvColumn = new DataGridViewButtonColumn(); public TopForm() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { chkDeleteDgvColumn.HeaderText = "チェック"; idDgvColumn.HeaderText = "番号"; todoDgvColumn.HeaderText = "予定"; datetimeDgvColumn.HeaderText = "日時"; placeDgvColumn.HeaderText = "場所"; whatDgvColumn.HeaderText = "何"; howmuchtimeDgvColumn.HeaderText = "予定時間"; btnUpdateDgvColumn.Text = "編集"; btnUpdateDgvColumn.UseColumnTextForButtonValue = true; btnUpdateDgvColumn.Name = "編集"; if (!dgv.Columns.Contains(chkDeleteDgvColumn)) { dgv.Columns.Add(chkDeleteDgvColumn); } if (!dgv.Columns.Contains(idDgvColumn)) { dgv.Columns.Add(idDgvColumn); } if (!dgv.Columns.Contains(todoDgvColumn)) { dgv.Columns.Add(todoDgvColumn); } if (!dgv.Columns.Contains(datetimeDgvColumn)) { dgv.Columns.Add(datetimeDgvColumn); } if (!dgv.Columns.Contains(placeDgvColumn)) { dgv.Columns.Add(placeDgvColumn); } if (!dgv.Columns.Contains(whatDgvColumn)) { dgv.Columns.Add(whatDgvColumn); } if (!dgv.Columns.Contains(howmuchtimeDgvColumn)) { dgv.Columns.Add(howmuchtimeDgvColumn); } if (!dgv.Columns.Contains(btnUpdateDgvColumn)) { dgv.Columns.Add(btnUpdateDgvColumn); } conn.ConnectionString = "Data Source=localhost;Database=task2;User ID=sa;password=localhost"; try { conn.Open(); cmd.CommandText = "SELECT * FROM Todolist;"; cmd.Connection = conn; using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { int rowNo = 0; while (reader.Read()) { dgv.Rows.Add(new DataGridViewRow()); dgv.Rows[rowNo].Cells[1].Value = reader[0]; dgv.Rows[rowNo].Cells[2].Value = reader[1]; dgv.Rows[rowNo].Cells[3].Value = reader[2]; dgv.Rows[rowNo].Cells[4].Value = reader[3]; dgv.Rows[rowNo].Cells[5].Value = reader[4]; dgv.Rows[rowNo].Cells[6].Value = reader[5]; rowNo++; } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { conn.Close(); } } private void btnAdd_Click(object sender, EventArgs e) { AddForm addForm = new AddForm(dgv); addForm.Show(); } }
試したこと
CellClickイベントで何の動作もしないようにするコードを書いてみたが追加された。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
0 コメント