[C#,windows] Overflow voor een sub-menu?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10-05 11:00
Voor een programma dat ik op dit moment aan het maken ben, wil ik een sub-menu dynamisch vullen met menu items. Aangezien dit er nogal veel kunnen zijn (denk aan tientallen), wil ik hier gebruik maken van de overflow functionaliteit die in de standaard menu component zit. Echter lijkt dit niet te werken op sub-menus.

Om mijn probleem te demonstreren heb ik een test programma gemaakt. Het is een simpel windows form met alleen een MenuItemToolStrip en een menu item waarmee items aan zowel het hoofdmenu als het sub-menu worden toegevoegd. Hier is de code die er bij hoort.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Drawing;
using System.Windows.Forms;

namespace test_app
{
    public partial class MainForm
    {
        [STAThread]
        public static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
        
        public MainForm()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();
            
            this.menuStrip1.CanOverflow = true;
            this.largeMenuToolStripMenuItem.DropDown.CanOverflow = true;
            this.largeMenuToolStripMenuItem.DropDown.MaximumSize = new Size(400, 200);
            
            counter = 0;
        }
        
        private int counter;
        void FillToolStripMenuItemClick(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; ++i)
            {
                ++counter;
                ToolStripMenuItem newItem = new ToolStripMenuItem(counter.ToString());
                newItem.Overflow = ToolStripItemOverflow.AsNeeded;
                this.largeMenuToolStripMenuItem.DropDownItems.Add(newItem);

                newItem = new ToolStripMenuItem(counter.ToString());
                newItem.Overflow = ToolStripItemOverflow.AsNeeded;
                this.menuStrip1.Items.Add(newItem);
            }
        }
    }
}


Bij het testen zie ik in het hoofdmenu inderdaad, zoals verwacht, een extra submenu verschijnen met de items die niet meer in het hoofdmenu passen. Maar het sub-menu krijgt pijltjes aan de boven- en onderkant om door de lijst te scrollen.

Heeft iemand een idee wat ik nog kan proberen om dit werkend te krijgen?
Ik weet dat ik redelijk eenvoudig de overflow zelf kan maken, maar ik wil eerst weten of ik het zo ook werkend kan krijgen.