1

私はコードエディター(winforms)に取り組んでおり、 contextmenu のコントロールをどのように追加できるのか疑問に思っています。最初からデザイナーを使用しません。

右クリックイベントの現在のコードは次のとおりです。

private void rtb_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {

            MenuItem[] menuItems = new MenuItem[] { new MenuItem("Cut"), new MenuItem("Copy"), new MenuItem("Paste") };

            ContextMenu rightcontext = new ContextMenu(menuItems);

            int xOffset = Cursor.Position.X - Dte.ActiveForm.Location.X;
            int yOffset = Cursor.Position.Y - Dte.ActiveForm.Location.Y;

            rightcontext.Show(Dte.ActiveForm, new Point(xOffset, yOffset));

        }
    }

これはすでに機能しています。しかし、問題は contextmenu のリストにコントロールを追加する方法でした。

特にカット、コピー、ペースト。

このようなコードが好きですか?

if (rightcontext.menuItems.SelectedItems == "Cut")
{
    rtb.Cut()
}

そのようなものですが、もちろん、contextmenuには.SelectedItems機能がありません。

だから私の問題は、それらのリストにコントロールを追加する方法でした。助けてください :/ どうもありがとうございました!

4

3 に答える 3

1

私が理解しているように、メニュー項目のクリックを処理したいですか? そのためには、メニュー項目にイベント ハンドラーを追加する必要があります。

//create menu items with cunstructor that takes 2 arguemtns (string, and event handler)

MenuItem[] menuItems = new MenuItem[] { new MenuItem("Cut", new System.EventHandler(this.CutMenuItemClick)), 
                                        new MenuItem("Copy", new System.EventHandler(this.CopyMenuItemClick)),
                                        new MenuItem("Paste", new System.EventHandler(this.PasteMenuItemClick)) };

次のように 3 つのイベントすべてを作成します。

private void CutMenuItemClick(object sender, EventArgs e)
{
    rtb.Cut();
}
于 2013-05-14T09:50:52.600 に答える