0

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();
        }
    }
}

最終的な注意: ドロップダウン項目は作成および追加されますが、問題は、クリックされたときにイベントが発生しないことです!

4

3 に答える 3

1

同じ問題がありました。ToolStripMenuItem のコンストラクターを介してハンドラーを渡す必要があります。

于 2016-06-02T17:36:03.420 に答える
1

あなたは間違ったイベントを呼んでいると思います。以下のようにする

item.DropDownItemClicked += item_Click;

への変更

item.DropDownItemClicked += onClick;
于 2013-06-01T04:44:15.480 に答える
1

この行のここにあります:

item.DropDownItemClicked += item_Click;

DropDownItemを別のイベントにバインドしていますitem_Click: イベントの名前を変更するか、正しいイベントにバインドします:

void item_Click(object sender, ToolStripItemClickedEventArgs e)
{
   // do your stuff
}
于 2013-06-01T04:45:04.093 に答える