Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#] ContextMenuStrip parent gebruiken

Pagina: 1
Acties:

  • Kryziek
  • Registratie: Juni 2010
  • Laatst online: 11:21

Kryziek

bb || !bb

Topicstarter
Ik heb een applicatie waarin twee listviews gebruikt worden: listView1 en listView2.
Op die listviews heb ik een ContextMenuStrip gezet meet een knop erin. Deze knop moet straks precies hetzelfde doen voor beide listviews. Maar het probleem is dat ik de informatie uit een item moet halen.
Normaal doe ik dat met:
code:
1
2
listView1.FocusedItem.SubItems[0].Text.ToString()
listView2.FocusedItem.SubItems[0].Text.ToString()


Ik kan nu wel twee keer dezelfde code gaan typen waarin bij de eerst listView1 gebruikt wordt en de ander listView2 maar dat is natuurlijk niet mooi. Daarom wil ik het in één keer doen voor beide listviews.
Daarom had ik bedacht om de parent op te halen van de ContextMenuStrip en die te gebruiken ipv listView1&2.
Maar dat werkt niet zoals ik in gedachten had.

Dit is wat ik nu heb:
code:
1
2
3
4
5
6
7
8
9
10
private void eMailSturenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Control parent = cmsUserMenu.SourceControl;

            if (listView1.SelectedItems.Count > 0 || listView2.SelectedItems.Count > 0)
            {
                MessageBox.Show(listView1.FocusedItem.SubItems[0].Text.ToString());
                MessageBox.Show(listView2.FocusedItem.SubItems[0].Text.ToString());
            }
        }

Het ophalen van de parent lukt wel, alleen het gebruiken dus niet. Dus waar nu listView1&2 staat moet bijvoorbeeld parent komen te staan. Alleen pakt hij dan de SelectedItems en FocusedItem niet meer.

Weet iemand hoe ik dat oplos? Of hoe ik het anders kan doen?
Op google kon ik niet een vergelijkbaar probleem of oplossing vinden.

Mvg.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kryziek schreef op maandag 05 november 2012 @ 12:53:
Alleen pakt hij dan de SelectedItems en FocusedItem niet meer.
Nogal wiedes:
C#:
1
Control parent = cmsUserMenu.SourceControl;


Je parent is nu een "Control"; dat kan vanalles zijn. Maak daar eens een listview van:

C#:
1
Listview parent = cmsUserMenu.SourceControl as Listview;

Wel even na deze cast controleren of parent niet null is; dat zou betekenen dat de SourceControl geen Listview is/was.

[ Voor 36% gewijzigd door RobIII op 05-11-2012 13:01 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Kryziek
  • Registratie: Juni 2010
  • Laatst online: 11:21

Kryziek

bb || !bb

Topicstarter
Dat control stond er nog van het testen, wat dus niet werkte.
Om 1 uur ging ik pauze houden en daarna heb ik zelf weer wat geprobeerd en kwam uit op dit:
C#:
1
2
3
4
ToolStripMenuItem tsItem = (ToolStripMenuItem)sender;
ContextMenuStrip cMenu = (ContextMenuStrip)tsItem.Owner;
Control control = cMenu.SourceControl;
ListView parent = (ListView)control;


Daarna wou ik het hier posten, zie ik jouw aangepaste bericht.
Beide manieren werken alleen die van mij is langer.

Super bedankt! Het werkt nu precies zoals ik wil. :D