Hej! Ett litet tillägg:Skicka icke-statisk metod med en delegate från en user control till en annan
Lustigt problem. Jag har en icke-statisk metod i en user control som jag vill skicka som en parameter till en annan user control som skall köra den.
Jag har en user control som ser ut så här:
[Serializable]
public partial class ViewInstitution : UserControl
...
Jag deklarerar en delegate så här:
delegate void MenuItemDelegate();
Metoden som ska skickas som en parameter ser ut så här:
public void DeleteCurrent()
{
//RelevantRecordID är en publik egenskap som min user control har,
//detta är anledningen till att metoden inte kan vara statisk
QuickModifier.DeleteInstitution(RelevantRecordID);
}
Det fungerar om jag försöker skicka en statisk metod, men om jag deklarerar den som utan "static" får jag ett fel om att min user control inte är "marked as serializable".
Jag skickar min delegate så här:
AddMenuItem(parameter1,parameter2,new MenuItemDelegate(DeleteCurrent)));
I nästa kontroll (den som har metoden AddMenuItem) kör jag metoden genom följande:
ReceivedDelegate.DynamicInvoke() //ReceivedDelegate är den MenuItemDelegate-parameter som tagits emot
Hoppas verkligen att det finns någon här med några bra tankar! :)
Tack på förhand!
/Ted
Sv: Skicka icke-statisk metod med en delegate från en user control till en annan
Jag har "kommit runt" problemet genom att skicka med de parametrar som ska användas för metodanropet. Jag behöver då inte serialisera min user control, istället skickar jag min Delegate samt eventuella parametrar denna Delegate behöver vid Invoke-tillfället.