8

テキストボックスに書かれているものをメニューストリップに追加したいと思います。ファイル>最近の検索で私が持っているもの。

プログラムで行うにはどうすればよいですか?また、ユーザーがそのサブフォルダー内のXアイテムをクリックしたときに、テキストがテキストボックスにコピーされて戻るように、イベントハンドラーを動的に割り当てることはできますか?

編集:Busquedas Recientesフォルダーをプログラムで呼び出すにはどうすればよいですか(写真)

代替テキスト

4

2 に答える 2

10

これを行うobject senderには、イベント ハンドラーでパラメーターを利用します。これのほとんどは私の頭の上から外れているので、コンパイルされると推測しているだけですが、開始する必要があります。

void AddMenuItem(string text, string action)
{
   ToolStripMenuItem item = new ToolStripMenuItem();
   item.Text = text;
   item.Click += new EventHandler(item_Click);
   item.Tag = action;

   //first option, inserts at the top
   //historyMenu.Items.Add(item);

   //second option, should insert at the end
   historyMenuItem.DropDownItems.Insert(historyMenuItem.DropDownItems.Count, item);
}

private void someHistoryMenuItem_Click(object sender, EventArgs e)
{
   ToolStripMenuItem menuItem = sender as ToolStripMenuItem;

   string args = menuItem.Tag.ToString();

   YourSpecialAction(args);
}
于 2009-10-22T15:46:28.730 に答える
5

それはかなり簡単です。次のことができます。

ToolStripMenuItem menuItem

foreach (string text in collectionOfText)
{
    ToolStripMenuItem foo = new ToolStripMenuItem(text);
    foo.Click += new EventHandler(ClickEvent);
    menuItem.DropDownItems.Add(foo);
}

その後、Clickイベントが機能しない場合(正しいメニュー項目が検出されないという問題が発生した場合)、menuItemに「DropDownItemClicked」イベントを追加できます。クリックしたアイテムのテキストを取得するには、次のようにします。

private void DropedDownItemClickedEvent(object sender, ToolStripItemClickedEventArgs e)
{
    string text = e.ClickedItem.Text;
}

それがお役に立てば幸いです。

ああ、イベントも削除することを忘れないでください。私が作成したすべての動的メニューでそれを行うのを忘れて、どういうわけか私の記憶の半分を食べてしまいました。:D

于 2009-10-22T16:00:31.637 に答える