如何从我创建的ListView控件中获取所选项目索引号?

时间:2016-02-25 23:18:30

标签: c# .net winforms listview

我创建了一个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。

1 个答案:

答案 0 :(得分:1)

您可以使用lvnf.SelectedItems property。如果它只允许选择一个项目,则可以使用lvnf.SelectedItems[0].Index

  

当MultiSelect属性设置为true时,此属性返回a   包含在ListView中选择的项的集合。对于   单选ListView,此属性返回一个集合   包含ListView中唯一选定的项目。