Just to give another viewpoint to think about, often you may not know if the form that you need to call a function on even exists, or if more than one of it exists.
For example, you may add a person to the database, and need to provoke any lists of people to refresh themselves to show the new addition... however, there may not even exist any forms that contain lists of people.
However, if it is your convention to always include a Logical property "ListenToMessages" and a method "GotMessage( pcMessage )", then it is simple to add a "SendMessage" method to your application object, which would use gchandrujs's method to scan the existing forms, see if they want to hear any messages, and give them the message "PERSON ADDED" or "PERSON CHANGED", etc.
(I actually use an object for the message, so in addition to the string description, I can include data properties that identify WHICH person was deleted or added, so that trees/lists don't have to update everything. In a multi user situation, you can have a message queue table and a listening timer watching the table to propogate messages into the application message queue from remote clients).
I'm sure this is overkill for your situation, but it it was already in place in your application, it would have accomplished this problem.