2

では、winformsアプリのform1にcontextmenustripを追加しました。ツリーノードをパラメーターとして受け取り、それに対して処理を行う標準クラスが他にあります。私がやりたいことの1つは、コンテキストメニューを設定することです。コンテキストメニューは、設計時に手動でフォームに追加されました。

私は次のようなことを試しました:

public static void MethodThatAddsAContextMenu(TreeNode node)
{
    node.ContextMenuStrip = Application.OpenForms[0].Controls["myContextMenu"] as ContextMenuStrip;
}

そして、百万の微妙でそれほど微妙ではないバリエーションのように見えるもの。私のコードはコントロールを見つけられません。ウォッチリストからドリルインすると、コンテキストメニューは実際にはフォームコントロールコレクションの一部ではないように見えますが。

助けていただければ幸いです。また、私はiPadでこれを行いました。フォーマットは問題ないように見えますが、そうでない場合はお詫びします。

前もって感謝します。

わかりました、あなたの提案によると、おそらくコードを投稿する方が簡単です:

private static TreeNode CreateSecurityNode(Security Sec)
{
    TreeNode sn = new TreeNode(Sec.SecurityName);
    sn.Tag = Sec;
    sn.ContextMenuStrip = Application.OpenForms[0].Container.Components["securityContext"] as ContextMenuStrip;
}

コンテナはを返しますnull

4

1 に答える 1

0

Form.ControlsContextMenuStrip はコレクションの一部ではありません。これはコンポーネントであり、コントロールではありません。

TreeNode を使用して ContextMenuStrip を渡してみます。

または、クラスを構築して、実行時にコンテキスト メニューをアタッチすることもできます。

また-

List<ContextMenuStrip>にすべてのコンテキスト メニュー (または) を入力し、Dictionary<ContextMenuStrip>それをフォームのプロパティとして公開できます。

public List<ContextMenuStrip> contextMenus {get;set;}

// // form load event, possibly
this.contextMenus.Add(myContextMenu);
于 2012-05-24T21:32:43.200 に答える