DropDownItemClick事件未触发

时间:2013-06-01 04:36:15

标签: c# event-handling

我有这个以编程方式添加到ToolStripMenuItem的DropDownButton。当我点击它时,我希望它触发一个事件,但它在Event块中没有做任何事情。请查看此代码并评论我做错了什么。

由于

private void privateChatToolStripMenuItem_Click(object sender, EventArgs e)
{
    Icon icon1 = new Icon(Assembly.GetExecutingAssembly().GetManifestResourceStream("Chat_NET_Client.pm.ico"));
    Bitmap bmp = icon1.ToBitmap();
    ToolStripMenuItem item = new ToolStripMenuItem(listView1.SelectedItems[0].Text, bmp);
    item.DropDownItemClicked += item_Click;
    chatsToolStripMenuItem.DropDownItems.Add(item);
}

void onClick(object sender, ToolStripItemClickedEventArgs e)
{
    inPM = true;
    txtLog.Visible = false;
    pmBox.Visible = true;
    mainToolStripMenuItem1.Enabled = true;
    pmBox.Clear();
    curPM = e.ClickedItem.Text;

    Invoke(new _appendLog(appendLog), "STARTING PM :D");
    using (StreamReader r = new StreamReader(appData + "\\" + e.ClickedItem.Text + ".dat"))
    {
        string line;

        while (r.ReadLine() != null)
        {
            line = r.ReadLine();
            pmBox.AppendText(line + Environment.NewLine);
            pmBox.ScrollToCaret();
        }
    }
}

最终说明: DropDown项目已创建并添加,问题是它在点击时不会触发事件!

3 个答案:

答案 0 :(得分:1)

我认为你打错了事。如下所示

item.DropDownItemClicked += item_Click;

更改为

item.DropDownItemClicked += onClick;

答案 1 :(得分:1)

这一行很好:

item.DropDownItemClicked += item_Click;

您将DropDownItem绑定到其他事件item_Click: 重命名您的事件或将其绑定到正确的事件:

void item_Click(object sender, ToolStripItemClickedEventArgs e)
{
   // do your stuff
}

答案 2 :(得分:1)

有同样的问题。您需要通过ToolStripMenuItem的构造函数传递处理程序。