C# - Menüelemek kezelése programból

Menükezelés 6. rész

forráskód letöltése
A menürendszerrel foglalkozó sorozatunk befejező részében arról lesz szó,, hogy miként tudunk programból új menüpontokat felvenni, illetve a meglévők tulajdonságait lekérdezni, vagy esetleg törölni azokat.
Ehhez a MenuItemCollection osztály ismeretére lesz szükségünk, melyben megtaláljuk azokat a funkciókat, tulajdonságokat, melyek e feladatok elvégzéséhez szükségszerűek.
MenuItemCollection osztály típusú például a MainMenu, ContextMenu Items nevű property-je, melyen keresztül az adott menürendszernek a menüpontjai érhetőek el.
Count
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public int Count {get;}
A Count property arról árulkodik, hogy hány eleme van az adott menü kollekciónak.
Item
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual MenuItem this[int index] {get;}
Az Item az osztály indexelője. Ezen keresztül a menüponthoz tartozó almenüpontokat kapjuk MenuItem osztály típusban.
Add
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual int Add(
MenuItem item
);
Új menüpontot létrehozni az Add függvénnyel tudunk.
Paraméterek
MenuItem item
Az item paraméterben adhatjuk meg MenuItem osztály típusban azt a menüpontot, melyet a meglévőkhöz kívánunk hozzáadni.
Visszatérési érték
Kapunk egy int típusú számot, mely a hozzáadott menüpont kollekción belüli sorszámát adja vissza.
Add
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual MenuItem Add(
string caption
);
Új menüpontot létrehozni az Add függvénnyel tudunk.
Paraméterek
string caption
A menüpont feliratát a caption paraméterben adhatjuk meg.
Visszatérési érték
Kapunk egy MenuItem típusú osztályt, melyen keresztül a hozzáadott menüpontot érhetjük el és annak további tulajdonságait befolyásolhatjuk.
Add
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual int Add(
int index,
MenuItem item
);
Új menüpontot létrehozni az Add függvénnyel tudunk.
Paraméterek
int index
Az index paraméterben határozhatjuk meg, hogy a létrehozandó új menüpont hol helyezkedjen el a kollekción belül.
MenuItem item
Az item paraméterben adhatjuk meg MenuItem osztály típusban azt a menüpontot, melyet a meglévőkhöz kívánunk hozzáadni.
Visszatérési érték
Kapunk egy int típusú számot, mely a hozzáadott menüpont kollekción belüli sorszámát adja vissza.
Add
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual MenuItem Add(
string caption,
EventHandler onClick
);
Új menüpontot létrehozni az Add függvénnyel tudunk.
Paraméterek
string caption
A menüpont feliratát a caption paraméterben adhatjuk meg.
EventHandler onClick
A menüpont kiválasztásakor lefutó függvényt az onClick paraméterben adhatjuk át.
Visszatérési érték
Kapunk egy MenuItem típusú osztályt, melyen keresztül a hozzáadott menüpontot érhetjük el és annak további tulajdonságait befolyásolhatjuk.
Add
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual MenuItem Add(
string caption,
MenuItem[] items
);
Új menüpontot létrehozni az Add függvénnyel tudunk.
Paraméterek
string caption
A menüpont feliratát a caption paraméterben adhatjuk meg.
MenuItem[] items
Az items paraméterben megadhatunk egy tömböt, mely az új menüpontokat tárolja.
Visszatérési érték
Kapunk egy MenuItem típusú osztályt, melyen keresztül a hozzáadott menüpontot érhetjük el és annak további tulajdonságait befolyásolhatjuk.
AddRange
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual void AddRange(
MenuItem[] items
);
Új menüpontokat létrehozni az AddRange függvénnyel tudunk.
Paraméterek
MenuItem[] items
Az items paraméterben megadhatunk egy tömböt, mely az újonnan hozzáadandó menüpontokat tárolja.
Clear
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual void Clear();
Törli a kollekció összes létező menüpontját.
Contains
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public bool Contains(
MenuItem value
);
Ellenőrizhetjük, hogy egy menüpont már létezik-e a menü kollekcióban vagy még nem.
Paraméterek
MenuItem value
Az ellenőrizendő menüpontot egy MenuItem osztály segítségével írhatjuk le a value paraméterben.
Visszatérési érték
Igaz, ha a megadott menüpont már létezik.
CopyTo
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public void CopyTo(
Array dest,
int index
);
Egy menü kollekció elemeit másolja egy tömbbe.
Paraméterek
Array dest
A tömb, melybe a másolást el kell végezni.
int index
A menü kollekcióban annak a menüpontnak a sorszáma, ahonnan a másolást kezdeni kell.
GetEnumerator
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public IEnumerator GetEnumerator();
A GetEnumerator segítségével egy IEnumerator interfészt kérhetünk a menü kollekcióról, melynek segítségével könnyedén végigmehetünk az összes menüponton.
Visszatérési érték
IEnumerator típusú objektumot kapunk.
IndexOf
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public int IndexOf(
MenuItem value
);
Egy menüpont sorszámának meghatározására szolgál az IndexOf függvény.
Paraméterek
MenuItem value
A keresendő menüpontot leíró MenuItem osztály.
Visszatérési érték
A keresett menüpont sorszáma, vagy ha nincs találat, akkor -1.
Remove
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual void Remove(
MenuItem item
);
Egy menüpont eltávolításához a Remove függvényt használhatjuk.
Paraméterek
MenuItem item
A törlendő menüpontot leíró MenuItem osztály.
RemoveAt
Osztály: System.Windows.Forms.Menu.MenuItemCollection
public virtual void RemoveAt(
int index
);
Egy menüpont eltávolításához a RemoveAt függvényt használhatjuk.
Paraméterek
int index
A törlendő menüpont kollekcióbeli sorszámát az index paraméter adja meg.
A példaprogram
Nézzük most miként is megy mindez a gyakorlatban.
Első példánk egy ListBox-ba kérdezi le a menüpont elemeinek feliratát. Ehhez csak egy ciklusra van szükségünk, mely végigmegy a tömbön.
    private void button1_Click(object sender, System.EventArgs e)
    {
      listBox1.Items.Clear();
      for (int i=0; i<mic.Count; i++)
      {
        listBox1.Items.Add(mic[i].Text);
      }
    }
A második példában azt láthatjuk, hogy miként tudunk egy új menüpontot létrehozni a már meglévőkhöz az Add függvény segítségével.
    private void button2_Click(object sender, System.EventArgs e)
    {
      mic.Add(DateTime.Now.ToString());
    }
A harmadik példában egy ContextMenu-be másoljuk a MainMenu menüpontjait, majd a ContextMenu-t meg is jelenítjük a ListBox felett. A másoláshoz először egy MenuItem elemeket tároló tömbbe helyezzük a menüpontokat a CopyTo függvénnyel, majd az AddRange segítségével egy lépésben hozzáadjuk a ContextMenu-höz az e tömbbe került menüpontokat.
    private void button3_Click(object sender, System.EventArgs e)
    {
      MenuItem[] mi = new MenuItem[mic.Count];
      mic.CopyTo(mi, 0);
      contextMenu1.MenuItems.AddRange(mi);
      contextMenu1.Show(listBox1, new Point(20, 20));
    }
Negyedik példában az IEnumerator interfész felhasználására láthatunk példát. Ennek segítségével lekérdezzük a már meglévő menüpontok azonosító kódját és szövegüket.
    private void button4_Click(object sender, System.EventArgs e)
    {
      listBox1.Items.Clear();
      MenuItem mi;
      IEnumerator ie = mic.GetEnumerator();
      while (ie.MoveNext())
      {
        mi = (MenuItem)ie.Current;
        listBox1.Items.Add(mi.Handle.ToString()+" "+mi.Text);
      }
    }
Végső példánkban töröljük a harmadik menüpontot a menürendszerből.
    private void button4_Click_1(object sender, System.EventArgs e)
    {
      mic.RemoveAt(2);
    }

Menükezelés cikksorozat