テキストボックスに書かれているものをメニューストリップに追加したいと思います。ファイル>最近の検索で私が持っているもの。
プログラムで行うにはどうすればよいですか?また、ユーザーがそのサブフォルダー内のXアイテムをクリックしたときに、テキストがテキストボックスにコピーされて戻るように、イベントハンドラーを動的に割り当てることはできますか?
編集:Busquedas Recientesフォルダーをプログラムで呼び出すにはどうすればよいですか(写真)
これを行う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);
}
それはかなり簡単です。次のことができます。
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