■ 追加した主なコントロール
ContextMenuStrip
* プロパティ名「contextMenuStrip1」
DataGridView
* プロパティ名「dataGridView1」 * ContextMenuStrip:contextMenuStrip1 * SelectionMode:FullRowSelect(複セルを選択した場合、行全体を選択状態にする) * MultiSelect:false(複数行選択できないようにする)* DataGridView のプロパティについては、以下を参照のこと
http://blogs.yahoo.co.jp/dk521123/14718079.html
■ サンプル
* DataGridView x 1 * ContextMenuStrip x 1
Form
private void Form1_Load(object sender, EventArgs e) { var people = new List<Person>() { new Person() {Id = "001", Name = "Mike", Age = 22, }, new Person() {Id = "002", Name = "Sam", Age = 18, }, new Person() {Id = "xxx", Name = "Tom", Age = 32, }, }; this.dataGridView1.DataSource = people; } // [動作]のところにある。 // セルのショートカット メニューが必要な場合に発生。 private void dataGridView1_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e) { if (e.RowIndex < 0 || e.ColumnIndex < 0) { return; } // 選択を一旦全てクリア this.dataGridView1.ClearSelection(); // で、改めて行選択 var row = this.dataGridView1.Rows[e.RowIndex]; row.Selected = true; } private void toolStripMenuItem1_Click(object sender, EventArgs e) { var selectedRow = this.dataGridView1.SelectedRows[0]; var selectedPerson = selectedRow.DataBoundItem as Person; if (selectedPerson != null) { MessageBox.Show( selectedPerson.Id + " / " + selectedPerson.Name + " / " + selectedPerson.Age); } }
DataGridViewに使うクラス
public class Person { public string Id { get; set; } public string Name { get; set; } public int Age { get; set; } }