Visual C#:如何将click事件附加到列表框中的项目?

时间:2017-03-28 01:55:12

标签: c# visual-studio listbox listboxitem mouseclick-event

enter image description here

参见上面的GUI设计

我正在创建一个程序,用户通过名称,地址,电话输入联系人,这些联系人存储在并行数组中。 然后程序将所有输入的联系人存储到列表框中。然后,我希望用户能够点击任何名称,并在相邻的文本框中显示该人员的完整联系信息。我的问题是如何创建一个事件,每次点击列表框中的新项目时,都会显示它们的信息。

输入将信息存储到数组中的按钮,并将名称添加到联系人列表中:

private void button1_Click(object sender, EventArgs e)
    {
        first[mindex] = txtFirst.Text;
        last[mindex] = txtLast.Text;
        email[mindex] = txtEmail.Text;
        address[mindex] = txtAddress.Text;
        cell[mindex] = txtCell.Text;

        lstContacts.Items.Add(first[mindex] + " " + last[mindex]);

        mindex++;

        txtLast.Text = "";
        txtFirst.Text = "";
        txtEmail.Text = "";
        txtAddress.Text = "";
        txtCell.Text = "";
        txtLast.Focus();

    }

这是我希望每次点击联系人姓名时执行的内容:

private void DisplayContact()
    {   
        int dispIndex;
        dispIndex = lstContacts.SelectedIndex;

        txtOutput.Text = "Name: " + "\t\t" + first[dispIndex] + last[dispIndex] + Environment.NewLine +
                         "Address: " + "\t\t" + address[dispIndex] + Environment.NewLine +
                         "Cell: " + "\t\t" + cell[dispIndex] + Environment.NewLine +
                         "Email: " + "\t\t" + email[dispIndex];
    }

只是不知道如何连接这些东西。任何帮助表示赞赏

3 个答案:

答案 0 :(得分:2)

在SelectedIndexChanged属性上:

 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
     var i = listBox1.Items[listBox1.SelectedIndex].ToString();
     MessageBox.Show(i.ToString());

 }

答案 1 :(得分:1)

您可以使用SelectionChanged事件。将SelectionChanged添加到您的列表框

private void listBox_SelectionChanged(object sender, EventArgs e)
{
        int dispIndex;
        dispIndex = lstContacts.SelectedIndex;

        txtOutput.Text = "Name: " + "\t\t" + first[dispIndex] + last[dispIndex] + Environment.NewLine +
                         "Address: " + "\t\t" + address[dispIndex] + Environment.NewLine +
                         "Cell: " + "\t\t" + cell[dispIndex] + Environment.NewLine +
                         "Email: " + "\t\t" + email[dispIndex];
}

希望它有所帮助!

答案 2 :(得分:0)

您希望ListBox订阅Click事件 - 然后您可以调用DisplayContact方法。

从“设计视图”中,选择要添加此功能的ListBox。在属性窗口中,单击闪电图标以打开事件选项卡。

Events Tab

从此处滚动,直至找到“单击操作”。双击名称(事件的名称,在本例中为“Click”),Visual Studio将自动将此控件订阅到click事件并创建方法。

Click Event

在Form的.cs文件中,您将找到生成的方法,该方法遵循您可能熟悉的格式。但是这里是你调用DisplayContact方法的地方:

    private void listBox1_Click(object sender, EventArgs e)
    {
        DisplayContact();
    }

您可以为任何您能想到的事件执行此操作 - 但只是在Form的代码中添加方法并不足以使其成功。 Visual Studio自动生成代码,告诉程序ListBox正在等待这样的事件,并且在表单的Designer文件中发生:

Designer code

^^这是来自FormName.Designer.cs文件,在InitializeComponent方法中。

希望这有帮助。