我有这个以编程方式添加到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项目已创建并添加,问题是它在点击时不会触发事件!
答案 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的构造函数传递处理程序。