C# 如何通过单击ListView中的特定行打开表单

C# 如何通过单击ListView中的特定行打开表单,c#,winforms,C#,Winforms,我正试图通过单击ListView中的一行来打开一个新表单,并将特定行中列出的NoteId传递给新表单,有人能帮忙吗 如果这是一个愚蠢的问题,很抱歉,但我从上个月开始才开始编程,我的研究证明是徒劳的:( private void populatingMainList() { List getAllNotes=getAllNotes(); lstMain.Items.Clear(); for(int i=0;i

我正试图通过单击ListView中的一行来打开一个新表单,并将特定行中列出的NoteId传递给新表单,有人能帮忙吗

如果这是一个愚蠢的问题,很抱歉,但我从上个月开始才开始编程,我的研究证明是徒劳的:(

private void populatingMainList()
{
List getAllNotes=getAllNotes();
lstMain.Items.Clear();
for(int i=0;i
您可以在listview中使用contextmenustrip,然后在其上添加一个带有函数的按钮,以打开您尝试打开的表单

1.从工具箱中查找ContextMenuStrip并将其添加到应用程序中

2.将其添加到listview,如下图所示

3.选择您添加的上下文菜单,并通过单击“在此处键入”创建一个新按钮

4.双击contextmenu上的按钮,然后在listview中单击contextmenu上的按钮时编写要执行的代码


谢谢您的回复。您如何获得contextmenustrip?它没有列在我的工具箱中。它必须在工具箱中搜索,并通过选择listview并在listview设置中查找contextmenu选项将该contextmenu分配给listview,然后将该contextmenu分配给它。@PupYD13我已将图像添加到我对的答案中让你更容易。基本上我复制了你的代码,它给了我“无法转换为字符串”错误,很好。我将noteId设置为ListViewItem.ListViewSubItem,并将其转换为字符串,但当我运行它时,它会显示“ListViewSubItem:{}”我想去掉它,这样我就可以创建一个方法来调用便笺并显示它。如果需要该值,请使用Text属性,如:\u noteid.Text
        private void populatingMainList()
    {

        List<Note> getAllNotes = GetAllNotes();

        lstMain.Items.Clear();

        for (int i = 0; i < getAllNotes.Count; i++)
        {
            lstMain.FullRowSelect = true;
            string _note;
            ListViewItem lvi = new ListViewItem(_note = getAllNotes[i].NoteComplete.ToString());
            if (_note == "True")
            {
                lvi.Text = "";
                lvi.Checked = true;                    
            }
            else
            {
                lvi.Text = "";
                lvi.Checked = false;
            }
            lvi.SubItems.Add(getAllNotes[i].NoteTitle);
            lvi.SubItems.Add(getAllNotes[i].NoteDot.ToString("dd-MM-yyyy"));
            lvi.SubItems.Add(getAllNotes[i].NoteNote);
            lvi.SubItems.Add(getAllNotes[i].NoteId.ToString());

            lstMain.Items.Add(lvi);
        }
    }

    private void lstMain_SelectedIndexChanged_1(object sender, EventArgs e)
    {
        //I believe that some sort of code that retrieve NoteId from the specific Row must be added here.

        if (_list == true)
        {
            frmSticky StickyForm = new frmSticky(_currentUser, _noteid);

        }
    }
private void lstMain_SelectedIndexChanged_1(object sender, EventArgs e)
{
    var lst = sender as ListView;
    _noteid = lst.SelectedItems[0].SubItems[3];

    if (_list == true)
    {
        frmSticky StickyForm = new frmSticky(_currentUser, _noteid);

    }
}