tag:crieit.net,2005:https://crieit.net/tags/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0/feed 「サンププログラム」の記事 - Crieit Crieitでタグ「サンププログラム」に投稿された最近の記事 2019-09-06T13:29:56+09:00 https://crieit.net/tags/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0/feed tag:crieit.net,2005:PublicArticle/15379 2019-09-06T13:29:56+09:00 2019-09-06T13:29:56+09:00 https://crieit.net/posts/C-DataGridView 【C#】DataGridView の 行選択時にチェックボックスの状態を変更する(その1) <p>データグリッドビューにチェックボックスを配置して、<br /> 行を選択したらチェックの状態も一緒に変更するサンプル。</p> <h2 id="画面"><a href="#%E7%94%BB%E9%9D%A2">画面</a></h2> <p>Windows Form でプロジェクトを作成し、画面にデータグリッドビューを配置します。</p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/12/CSharpDataGridCheckBoxColumn000.jpg" alt="画面の作成" /></p> <p>先頭列をチェックボックス(DataGridViewCheckBoxColumn)にして、他は適当にテキストボックス列を2列を追加。</p> <h3 id="プロパティ"><a href="#%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3">プロパティ</a></h3> <p>変更したプロパティはだいたい次のような感じ。</p> <p>プロパティ<br /> 説明<br /> デフォルト<br /> 変更後</p> <p>AllowUserToResizeRows<br /> ユーザーが列のサイズを変更できるかどうか<br /> True<br /> False</p> <p>EditMode<br /> セルの編集が開始される方法を決定するモード<br /> EditOnKeystrokeOrF2<br /> EditProgrammatically</p> <p>SelectionMode<br /> DataGridView のセルの選択方法<br /> RowHeaderSelect<br /> FullRowSelect</p> <p>RowHeadersVisible<br /> 行ヘッダーを含んでいる列が表示されるかどうか<br /> True<br /> False</p> <h3 id="メソッド"><a href="#%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89">メソッド</a></h3> <p>メソッドは、「CellClick」のみ追加。</p> <h2 id="プログラム"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0">プログラム</a></h2> <pre><code>using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SampleDataGridCheckbox { public partial class Form1 : Form { public Form1() { InitializeComponent(); dataGridView1.Rows.Add(false, "テスト1", "テスト1"); dataGridView1.Rows.Add(false, "テスト2", "テスト2"); dataGridView1.Rows.Add(false, "テスト3", "テスト3"); dataGridView1.Rows.Add(false, "テスト4", "テスト4"); dataGridView1.Rows.Add(false, "テスト5", "テスト5"); dataGridView1.Rows.Add(false, "テスト6", "テスト6"); } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)dataGridView1[0, e.RowIndex]; if (cell.Value.ToString() == "False") { dataGridView1.Rows[e.RowIndex].SetValues(true); } else { dataGridView1.Rows[e.RowIndex].SetValues(false); } } } } </code></pre> <p>初期表示時に、テスト用のデータを6件ほど、データグリッドビューの行に追加。</p> <h2 id="起動してみる"><a href="#%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B">起動してみる</a></h2> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/12/CSharpDataGridCheckBoxColumn001.jpg" alt="初期表示" /></p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/12/CSharpDataGridCheckBoxColumn002.jpg" alt="行を選択" /></p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/12/CSharpDataGridCheckBoxColumn003.jpg" alt="再度選択" /></p> <p>無事に行を選択するとチェックされるようになりました。</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>DataGridViewに表示するデータをDBから取得して、<br /> DataSourceに設定するといった場合は、列の指定をインデックスではなく列名で指定した方が無難かと思います。</p> <p>サクッとした話ですが以上。</p> <p>ではでは。</p> <p> </p> doraxdora