/**************************************************/
/*★ ListView でアイテム名を変更する 前田 稔 ★*/
/**************************************************/
using System;
using System.Drawing;
using System.Windows.Forms;
public class MyForm : Form
{
private ListView ListView1;
public MyForm()
{
InitializeComponent();
Load += new System.EventHandler(MyForm_Load);
}
private void InitializeComponent()
{
this.ListView1 = new System.Windows.Forms.ListView();
this.SuspendLayout();
// ListView1
this.ListView1.Location = new System.Drawing.Point(12, 12);
this.ListView1.Name = "ListView1";
this.ListView1.Size = new System.Drawing.Size(258, 232);
this.ListView1.Sorting = System.Windows.Forms.SortOrder.Descending;
this.ListView1.TabIndex = 0;
this.ListView1.UseCompatibleStateImageBehavior = false;
this.ListView1.View = System.Windows.Forms.View.List;
this.ListView1.LabelEdit = true; //アイテムを編集
ListView1.BeforeLabelEdit += new LabelEditEventHandler(ListView1_BeforeLabelEdit);
ListView1.AfterLabelEdit += new LabelEditEventHandler(ListView1_AfterLabelEdit);
ListView1.KeyUp += new KeyEventHandler(ListView1_KeyUp);
// MyForm
this.ClientSize = new System.Drawing.Size(282, 256);
this.Controls.Add(this.ListView1);
this.Name = "MyForm";
this.ResumeLayout(false);
}
// ListView にアイテムを登録
private void MyForm_Load(object sender, EventArgs e)
{
ListView1.Items.Add("バラ");
ListView1.Items.Add("ゆり");
ListView1.Items.Add("ひまわり");
ListView1.Items.Add("さくら");
ListView1.Items.Add("コスモス");
}
// アイテムのラベル編集が開始
private void ListView1_BeforeLabelEdit(object sender, LabelEditEventArgs e)
{
//インデックス0のアイテム編集は禁止する
if (e.Item == 0)
{ e.CancelEdit = true; }
}
// アイテムのラベル編集が終了
private void ListView1_AfterLabelEdit(object sender, LabelEditEventArgs e)
{
if (e.Label != null) //ラベルが変更されたとき
{
ListView lv = (ListView)sender;
//同名のアイテムがあるか調べる
foreach(ListViewItem lvi in lv.Items)
{
if (lvi.Index != e.Item && lvi.Text == e.Label)
{
MessageBox.Show("同名のアイテムがすでにあります。");
e.CancelEdit = true; //編集をキャンセルして元に戻す
return;
}
}
}
}
// F2キーでラベル編集を開始するとき
private void ListView1_KeyUp(object sender, KeyEventArgs e)
{
ListView lv = (ListView)sender;
//フォーカスのあるアイテムの編集を開始
if (e.KeyCode == Keys.F2 && lv.FocusedItem != null && lv.LabelEdit)
{
lv.FocusedItem.BeginEdit();
}
}
}
class form01
{
public static void Main()
{
MyForm mf = new MyForm();
Application.Run(mf);
}
}
|