43

MenuStrip(ツールボックスから) をフォーム デザインに追加しても、多くのネイティブ Windows アプリケーションで見られるようなメニュー バーが生成されないことに気付きました。代わりに、Visual Studio のようなメニュー バーが表示されます。のスタイル設定はどれも、MenuStripより一般的なネイティブ メニュー バーを模倣しているようには見えません。

メモ帳やタスク マネージャーなどで表示されるメニュー バーと同じように見えるメニュー バーを Windows フォーム アプリケーションに追加する方法はありますか? (できればデザイナーが必要ですが、プログラムで追加してもかまいません。)

説明用のスクリーンショット:

4

4 に答える 4

66

ツールボックスに移動し、その中の任意の場所を右クリックして、[アイテムの選択] を選択します。

ダイアログがロードされて表示されたら、MainMenu が表示されるまで下にスクロールします。それをツールボックスに追加すると、ネイティブ メニュー バーができあがります。

于 2010-05-06T03:33:10.430 に答える
23

次のように、フォームのMenuプロパティを設定することでこれを行うことができます。

private void Form1_Load(object sender, EventArgs e)
{
    this.Menu = new MainMenu();
        MenuItem item = new MenuItem("File");
        this.Menu.MenuItems.Add(item);
            item.MenuItems.Add("Save", new EventHandler(Save_Click));
            item.MenuItems.Add("Open", new EventHandler(Open_Click)); 
        item = new MenuItem("Edit");
        this.Menu.MenuItems.Add(item);
            item.MenuItems.Add("Copy", new EventHandler(Copy_Click));
            item.MenuItems.Add("Paste", new EventHandler(Paste_Click)); 
        // etc ...
}

private void Save_Click(object sender, EventArgs e)
{
    // save
}

これらのメニューは、「通常の」システム メニューのように見えます。

ただし、これに対するデザイナーのサポートは見つかりませんでした。私の弁護では、私は一生懸命努力しませんでした。

于 2010-05-06T03:16:03.477 に答える
8

コンポーネントを使用する代わりに、コンポーネントMainMenu用に独自のレンダラーを作成できますMenuStrip。ここでの利点は、MenuStripItemオブジェクトに画像を追加できることです。カスタムレンダラーのペーストビンは次のとおりです。

NativeRenderer

レンダラーのコンストラクターに適用できるさまざまなテーマがあります。それらすべてを試して、ネイティブテーマを確認してください。このレンダラーを使用するには、インスタンスをMenuStripRendererプロパティに設定するだけです。

menuStrip.Renderer = new NativeRenderer([theme]);
于 2012-12-03T20:04:51.430 に答える
4

私は通常、最小限の単色メニューを提供するMenuStrip を設定しRenderModeます(グラデーションやそのような退廃的なものはありません)。System

それでも十分でない場合は、必要なものを取得するために、いくつかの低レベルのフープをジャンプする必要があります。

于 2010-05-06T03:07:42.380 に答える