2009-10-22 12 views
7

テキストボックスに書かれているものをmenustripに追加したいと思います。 [ファイル]> [最近の検索]の項目にあります。計画的にmenustripに物を追加するには?

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

編集:どのように私はプログラム的に(PICで)フォルダBusquedas Recientesに呼び出すことができます

alt text

+0

どのIDEまたはプラットフォーム/言語を使用していますか? (Win32 APIを使用したC、.NET FrameworkのC#など) – Achimnol

答えて

8

あなたは、イベントハンドラで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); 
} 
+0

最初の方法が動作します。検索は追加されていますが、一番上のレベルです。私はそれをこの階層に追加する必要があります:ファイル> RecentSearches>ここに行く。どんな助け? –

+0

特定の場所を挿入するための私の編集を参照してください。 –

4

かなり単純です。あなたは次の操作を行うことができます:Clickイベントが動作しない場合、その後

ToolStripMenuItem menuItem 

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

を、あなたはのmenuItemに「DropDownItemClicked」イベントを追加することができます(私はそれが正しいメニュー項目を検出しないトラブルがありました) 。あなたがクリックしたアイテムのテキストを取得するには、次のようにします。

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

私は役に立つと思います。

ああ、イベントを削除することも忘れないでください。私が作ったすべてのダイナミックメニューでそれをするのを忘れて、何とか私の記憶の半分を食べてしまった。 :D

+0

Lol。最後のコメントはP +1です。別の質問を保存しましたxD –

関連する問題