我创建了一个ListView控件类:
class ListViewNF : System.Windows.Forms.ListView
{
public ListViewNF()
{
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.EnableNotifyMessage, true);
}
protected override void OnNotifyMessage(System.Windows.Forms.Message m)
{
if (m.Msg != 0x14)
{
base.OnNotifyMessage(m);
}
}
}
然后在form1顶部:
ListViewNF lvnf;
然后在构造函数中:
lvnf = new ListViewNF();
lvnf.Location = new Point(250, 18);
lvnf.Size = new Size(474, 168);
lvnf.View = View.Details;
this.SuspendLayout();
lvnf.LabelEdit = true;
lvnf.Columns.Add("From", 100, HorizontalAlignment.Left);
lvnf.Columns.Add("Subject", 200);
lvnf.Columns.Add("Date", 300);
lvnf.Sorting = SortOrder.None;
lvnf.ColumnClick += lvnf_ColumnClick;
lvnf.Click += lvnf_Click;
lvnf.SelectedIndexChanged += lvnf_SelectedIndexChanged;
this.Controls.Add(lvnf);
this.ResumeLayout(false);
然后在SelectedIndexChanged事件中:
void lvnf_SelectedIndexChanged(object sender, EventArgs e)
{
label9.Text = lvnf.inde
}
但是lvnf中不存在SelectedIndex属性。 我想在label9中显示的是当前在ListView中的项目的当前索引。如果我在项目43上单击鼠标,则在标签9 43中显示。
更新我尝试和需要的内容
void lvnf_SelectedIndexChanged(object sender, EventArgs e)
{
string[] lines = File.ReadAllLines(emailsIDSFile);
label9.Text = lines[lvnf.SelectedIndices]
}
我有一个文本文件,其中包含数字字符串,例如:
“1” “44” “55”
等等。 我需要做的是从文本文件中获取与我选择的项目索引相关的行。
例如,如果在ListView中我现在点击第一个项目然后从文本文件中我需要在label9中显示第一行作为数字。 如果我单击ListView中的第一个项目并在文本文件中第一个字符串是“55”,那么在label9中显示55
然后,如果我点击ListView中的项目编号76并且索引是76然后显示文本文件中的行号76,例如第76行是“8”,那么在label9中显示数字8。
答案 0 :(得分:1)
您可以使用lvnf.SelectedItems
property。如果它只允许选择一个项目,则可以使用lvnf.SelectedItems[0].Index
当MultiSelect属性设置为true时,此属性返回a 包含在ListView中选择的项的集合。对于 单选ListView,此属性返回一个集合 包含ListView中唯一选定的项目。