7

こんにちは私は、実行時にWinFormsアプリ中にサブアイテムを追加したい「お気に入り」メニューを備えたToolStripMenuを持っています。右クリックして[お気に入りに追加]オプションのあるコンテキストメニューを表示するdatagridviewがあります。そのイベントが発生したら、datagriviewから選択した行のテキスト(これはすでに実行方法を知っています)を使用して、このお気に入りメニューにアイテムを追加したいと思います。newlyCreatedToolStripMenuItem_Clickトリッキーな部分は、イベントのコードを作成する必要があることです。お気に入りリストを保存する方法は後で決定します。

だから私たちは行くつもりです:

datagridview「ジョン・スミス」の行を右クリック

から「お気に入りに追加」を選択しますContextMenu

お気に入りToolStripMenuには、「ジョン・スミス」という新しいアイテムが追加されています

「 JohnSmith」をクリックするとToopStripMenuItem、アクションが発生します(daragridview行でその行を選択するなど)。

良いスタートのアイデアはありますか?

4

2 に答える 2

16

私があなたを正しく理解しているなら、これはまさにあなたが望むものだと思います:

    private void buttonAddFav_Click(object sender, EventArgs e)
    {
        ToolStripItem item = new ToolStripMenuItem();
        //Name that will apear on the menu
        item.Text = "Jhon Smith";
        //Put in the Name property whatever neccessery to retrive your data on click event
        item.Name = "GridViewRowID or DataKeyID";
        //On-Click event
        item.Click += new EventHandler(item_Click);
        //Add the submenu to the parent menu
        favToolStripMenuItem.DropDownItems.Add(item);
    }

    void item_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }
于 2012-05-17T07:43:37.277 に答える
4

これは非常に簡単です。すべてのお気に入りに使用されるコールバックメソッドを設定する必要がありますToolStripMenuItem。このメソッドでは、item.Textまたはitem.Name属性を比較し、さまざまなお気に入りのメソッドを実行します。

private void FavoriteToolStriptem_Click(object sender, EventArgs e) {
    ToolStripMenuItem item = sender as ToolStripMenuItem;
    MessageBox.Show("You clicked on the menu item called " + item.Name + " shown as " + item.Text);
}
于 2012-05-17T06:38:16.147 に答える